为什么PGSQL中不支持Unicode字符θ

Why Unicode Charater θ not supported in PGSQL

本文关键字:字符 Unicode 不支持 PGSQL 为什么      更新时间:2023-10-16

我正在用c++使用Postgresql,并试图插入unicode字符αβγδεζηθ

在某个数据库表中执行插入查询,发现'θ'不支持字符

为此我运行gdb。对于这个字符,即。'θ'显示的是直链字符。

  1. 我可以找到Postgresql支持的字符集吗?
  2. Pgsql是否支持此字符
  3. 有没有办法支持这个字符

备注:我使用c++来执行这个命令。但这并不能挽救这一切价值。2. 数据库是UTF8兼容的,因为当我删除这个'θ'插入查询被成功触发。

是的,PostgreSQL支持θ,字符 U+03b8希腊小写字母Theta, unicode转义和文字形式:

regress=> SELECT 'θ', E'u03b8';
 ?column? | ?column? 
----------+----------                                                                                                                                                          
 θ        | θ                                                                                                                                                                  
(1 row)                                                                                                                                                      

猜测,你的数据库编码或客户端编码不支持它,或者更有可能给你提到的"乱码",你的client_encoding不匹配你实际发送的数据的编码。

检查psql中lSHOW server_encoding;的数据库编码。从问题的客户端连接中获取SHOW client_encoding; 的客户端编码。

我想说你可能发送UTF-8或UTF-16数据到服务器,但告诉服务器它是iso-8859-1或windows-1252,反之亦然。虽然θ不是在这些编码;你一定是在使用其他东西,或者在到达PostgreSQL之前发送的数据已经被另一个无效的转换弄乱了。

如果你能展示一下就好了:

  • 产生的确切的"乱码"和匹配的输入
  • 发送给PostgreSQL的C字符串的原始字节,如十六进制转义