diff --git a/lmfdb/classical_modular_forms/test_cmf.py b/lmfdb/classical_modular_forms/test_cmf.py
index f00986423a..1d71e15250 100644
--- a/lmfdb/classical_modular_forms/test_cmf.py
+++ b/lmfdb/classical_modular_forms/test_cmf.py
@@ -594,3 +594,58 @@ def test_underlying_data(self):
and 'mf_hecke_charpolys' in data and 'charpoly_factorization' in data
and 'mf_newform_portraits' in data and "data:image/png;base64" in data
and 'mf_hecke_traces' in data and 'trace_an' in data)
+
+ def test_character_values(self):
+ # A newform orbit of dimension 1
+ data = self.tc.get('/ModularForm/GL2/Q/holomorphic/12/3/c/a/').get_data(as_text=True)
+ character_values_table = r"""
+
+
+
+ \(n\) |
+ \(5\) |
+ \(7\) |
+
+ \(\chi(n)\) |
+ \(-1\) |
+ \(1\) |
+
+
+"""
+ assert (character_values_table in data)
+
+ # A newform orbit of dimension 2
+ data = self.tc.get('/ModularForm/GL2/Q/holomorphic/119/1/d/a/').get_data(as_text=True)
+ character_values_table = r"""
+
+
+
+ \(n\) |
+ \(52\) |
+ \(71\) |
+
+ \(\chi(n)\) |
+ \(-1\) |
+ \(-1\) |
+
+
+"""
+ assert (character_values_table in data)
+
+ # An embedded newform
+ data = self.tc.get('/ModularForm/GL2/Q/holomorphic/119/1/d/a/118/1/').get_data(as_text=True)
+ character_values_table = r"""
+
+
+
+ \(n\) |
+ \(52\) |
+ \(71\) |
+
+ \(\chi(n)\) |
+ \(-1\) |
+ \(-1\) |
+
+
+"""
+ assert (character_values_table in data)
diff --git a/lmfdb/classical_modular_forms/web_newform.py b/lmfdb/classical_modular_forms/web_newform.py
index 48b5ddde5e..1839a9134b 100644
--- a/lmfdb/classical_modular_forms/web_newform.py
+++ b/lmfdb/classical_modular_forms/web_newform.py
@@ -185,6 +185,9 @@ def __init__(self, data, space=None, all_m=False, all_n=False, embedding_label=N
if self.dim == 1:
# avoid using mf_hecke_nf when the dimension is 1
vals = ConreyCharacter(self.level, db.char_dirichlet.lookup("%s.%s" % (self.level,self.char_orbit_label),projection="first")).values_gens
+ # ConreyCharacter.values_gens returns the exponent of character values,
+ # But we need the character values themselves here when hecke_ring_cyclotomic_generator is unspecified.
+ vals = [[v[0],[1] if v[1] == 0 else [-1]] for v in vals]
eigenvals = { 'hecke_ring_cyclotomic_generator': 0, 'hecke_ring_character_values': vals, 'hecke_ring_power_basis': True, 'maxp': previous_prime(len(self.traces)+1), 'an': self.traces }
else:
eigenvals = db.mf_hecke_nf.lucky({'hecke_orbit_code': self.hecke_orbit_code}, ['an'] + hecke_cols)