postgresql 从postgres中选择后UTF8字符不正确

m1m5dgzv  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(250)

我在postgres中有一个包含电子邮件地址的数据库表。其中一个客户的电子邮件地址中有一个变音符号(ü)。这本不应该是一个问题,但不知何故,go中的字符串包含了错误的字节序列(它是E3 BC而不是C3 BC),这给我带来了一系列问题。
我使用client_encoding=UTF8连接到数据库,数据库设置为UTF8。如果运行以下命令,我可以看到数据库中的字节序列与预期一致:

SELECT encode("email"::bytea, 'hex') FROM participants WHERE  email like 'XXXXXX%';
                    encode                    
----------------------------------------------
                     c3bc

(the其余数据已隐藏)
我使用数据库/sql包和postgres驱动程序读取数据,如果我在go中打印字符串,我会得到XXXXXXe 3bcXXXXXX,这不是我所期望的(同样,用X隐藏电子邮件的其余部分)。
这是一个错误,还是我误解了什么?

zf9nrax1

zf9nrax11#

请确保数据库已正确设置为UTF8。区域设置在创建数据库时已修复,可能会导致LOWER等SQL函数出现问题。请使用pg_dropclusterpg_createcluster --encoding=UTF8重新创建数据库。

相关问题