我正在使用C ++编写Postgresql并尝试插入unicode字符αβγδεζηθ。
在某些数据库表中触发插入查询,发现'θ'不支持字符。
为此我运行gdb。对于这个角色,即'θ',它显示出狡猾的角色。
注意: 1.我正在使用c ++来触发此命令。并没有保存这个 值。 2.数据库符合UTF8,因为当我删除此'θ'时,插入查询会成功触发。
答案 0 :(得分:1)
是的,PostgreSQL支持θ
,字符 U+03b8
希腊小写字母Theta ,无论是unicode转义还是字面形式:
regress=> SELECT 'θ', E'\u03b8';
?column? | ?column?
----------+----------
θ | θ
(1 row)
猜测,您的数据库编码或客户端编码不支持它,或者更可能是因为您提到“乱码”,您的client_encoding
与您实际数据的编码不匹配发送。
使用psql中的\l
或SHOW server_encoding;
检查数据库编码。使用问题从客户端连接获取SHOW client_encoding;
的客户端编码。
我说你可能会向服务器发送UTF-8或UTF-16数据,但告诉服务器它是iso-8859-1或windows-1252,反之亦然。虽然θ
不在那些编码中;你必须使用别的东西,或者在进入PostgreSQL之前发送已经被另一个无效转换破坏的数据。
如果你表现出来会很有帮助: