为了账号安全,请及时绑定邮箱和手机立即绑定

从 postgres 选择后 UTF8 字符不正确

从 postgres 选择后 UTF8 字符不正确

Go
犯罪嫌疑人X 2023-03-21 10:28:25
我在 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 函数出现问题,例如LOWERpg_dropcluster使用和重新创建数据库pg_createcluster --encoding=UTF8



查看完整回答
反对 回复 2023-03-21
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信