我在 postgres 中有一个包含电子邮件地址的数据库表。其中一位客户的电子邮件地址中有一个变音符号 (ü)。这应该不是问题,但不知何故,go 中的字符串包含错误的字节序列(它是 E3BC 而不是 C3BC),这后来给我带来了很多问题。
我正在连接到数据库client_encoding=UTF8
,数据库是为 UTF8 设置的。如果我运行以下命令,我可以看到字节序列与数据库中的预期一致:
SELECT encode("email"::bytea, 'hex') FROM participants WHERE email like 'XXXXXX%'; encode ---------------------------------------------- c3bc
(其余数据已隐藏)
我使用 database/sql 包和 postgres 驱动程序读取数据,如果我在 go 中打印字符串,我得到 XXXXXXe3bcXXXXXX,这不是我所期望的(同样,用 X 隐藏了电子邮件的其余部分)。
这是一个错误,还是我误会了什么?
烙印99
相关分类