为什么使用Unicode字符θ;PGSQL中不支持 我用PostgreSQL与C++进行交互,尝试插入Unicode字符γδεZeta Ethth.P/

为什么使用Unicode字符θ;PGSQL中不支持 我用PostgreSQL与C++进行交互,尝试插入Unicode字符γδεZeta Ethth.P/,c++,postgresql,character-encoding,C++,Postgresql,Character Encoding,在某个数据库表中激发了insert查询,发现“θ”不受字符支持 为此,我运行gdb。对于这个字符,即“θ”,它显示的是直布罗陀字符 我可以找到Postgresql支持的字符集吗 Pgsql是否支持此字符 有没有办法支持这个角色 注意:1。我正在使用C++来触发这个命令。但这并不能挽救这一切 价值 2.数据库符合UTF8,因为当我删除此“θ”插入查询时,已成功触发。是的,PostgreSQL支持θ,字符U+03b8希腊小写字母θ,采用unicode转义和文字形式: regress=> SEL

在某个数据库表中激发了insert查询,发现“θ”不受字符支持

为此,我运行gdb。对于这个字符,即“θ”,它显示的是直布罗陀字符

  • 我可以找到Postgresql支持的字符集吗
  • Pgsql是否支持此字符
  • 有没有办法支持这个角色
  • 注意:1。我正在使用C++来触发这个命令。但这并不能挽救这一切 价值
    2.数据库符合UTF8,因为当我删除此“θ”插入查询时,已成功触发。

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

    regress=> SELECT 'θ', E'\u03b8';
     ?column? | ?column? 
    ----------+----------                                                                                                                                                          
     θ        | θ                                                                                                                                                                  
    (1 row)                                                                                                                                                      
    
    猜测一下,您的数据库编码或客户端编码不支持它,或者更可能是由于您提到了“胡言乱语”,您的
    client\u编码与实际发送的数据编码不匹配

    用psql中的
    \l
    检查数据库编码,或
    显示服务器编码。使用
    SHOW client\u编码获取客户端编码来自与问题相关的客户端连接

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

    如果您能展示以下内容,将非常有帮助:

    • 确切的“胡言乱语”产生和匹配的输入
    • 以十六进制转义形式发送到PostgreSQL的C字符串的原始字节

    目前尚不清楚gdb与此有何关系。“为此,我运行gdb”。嗯?实际上,我在调试代码,我把C++的查询烧到数据库中,用GDB打印每一行的输出,即添加断点,当输出结果打印成字符时,你就把另一个变量添加到你的混合中:你正在运行GDB的终端字符编码。在该终端中,
    locale
    命令的输出是什么?其余的呢-
    \l
    显示服务器编码
    显示客户端编码?请将这些添加为对原始问题的编辑,然后在完成后在此处进行评论。我已检查数据库编码是否为UTF-8。还想更新您是对的,支持“θ”,因为它是随机行为。客户端编码也可以。因为它支持UTF8字符,而不是“θ”,但有时。我发现,代码中可能存在一些问题。我相信这是代码中的字符集处理问题,或者更微妙的事情,比如内存问题。如果是字符编码问题,那么就不应该支持字符,因为对于字符串“αβγδεζηθ”,只支持“θ”,不支持“θ”。也就是说,如果我输入“αβγδεζη”,那么值就成功提交(请参见我省略了θ)@vermaraj实际上,事实并非如此。请在您的计算机上显示您的
    client\u编码
    locale
    命令的输出。另外,您的PostgreSQL版本是什么(
    select version()
    )。