我在 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 隐藏了电子邮件的其余部分)。这是一个错误,还是我误会了什么?
1 回答
烙印99
TA贡献1829条经验 获得超13个赞
确保您的数据库已针对 UTF8 正确设置。区域设置在创建数据库时是固定的,可能会导致 sql 函数出现问题,例如LOWER
. pg_dropcluster
使用和重新创建数据库pg_createcluster --encoding=UTF8
。
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消