我在 postgres 中有一個包含電子郵件地址的數(shù)據(jù)庫表。其中一位客戶的電子郵件地址中有一個變音符號 (ü)。這應該不是問題,但不知何故,go 中的字符串包含錯誤的字節(jié)序列(它是 E3BC 而不是 C3BC),這后來給我?guī)砹撕芏鄦栴}。我正在連接到數(shù)據(jù)庫client_encoding=UTF8,數(shù)據(jù)庫是為 UTF8 設置的。如果我運行以下命令,我可以看到字節(jié)序列與數(shù)據(jù)庫中的預期一致:SELECT encode("email"::bytea, 'hex') FROM participants WHERE email like 'XXXXXX%';
encode
----------------------------------------------
c3bc(其余數(shù)據(jù)已隱藏)我使用 database/sql 包和 postgres 驅動程序讀取數(shù)據(jù),如果我在 go 中打印字符串,我得到 XXXXXXe3bcXXXXXX,這不是我所期望的(同樣,用 X 隱藏了電子郵件的其余部分)。這是一個錯誤,還是我誤會了什么?
1 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
確保您的數(shù)據(jù)庫已針對 UTF8 正確設置。區(qū)域設置在創(chuàng)建數(shù)據(jù)庫時是固定的,可能會導致 sql 函數(shù)出現(xiàn)問題,例如LOWER
. pg_dropcluster
使用和重新創(chuàng)建數(shù)據(jù)庫pg_createcluster --encoding=UTF8
。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消