【问题标题】:PostgreSQL: unable to save special character (regional language) in blobPostgreSQL:无法在 blob 中保存特殊字符(区域语言)
【发布时间】:2013-09-21 20:28:58
【问题描述】:

我正在使用 PostgreSQL 9.0 并尝试存储包含某些特殊字符(区域语言字符 - UTF8 编码)的 bytea 文件。但我无法将数据存储为用户输入。

例如:

调试时我收到的请求<sp_first_name_gu name="sp_first_name_gu" value="ઍયેઍ"></sp_first_name_gu><sp_first_name name="sp_first_name" value="aaa"></sp_first_name>

这是存储在 DB 中的内容<sp_first_name_gu name="sp_first_name_gu" value="\340\252\215\340\252\257\340\253\207\340\252\215"></sp_first_name_gu><sp_first_name name="sp_first_name" value="aaa"></sp_first_name>

注意值标签的区别。有了这个问题,我无法检索用户输入的正确文本。 请建议我需要做什么?

PS:我的数据库是 UTF8 编码的。

【问题讨论】:

    标签: database postgresql blob special-characters bytea


    【解决方案1】:

    该值已正确存储,但在检索时转义为八进制转义序列。

    要解决这个问题 - 更改 DB 驱动程序的设置或为 bytea 选择不同的不同编码/转义。

    或者只为 XML 数据使用适当的字段类型 - 例如 varcharXML

    【讨论】:

      【解决方案2】:

      您的字符串\340\252\215\340\252\257\340\253\207\340\252\215 正好是八进制编码的ઍયેઍ,因此postgres 可以正确存储您的数据。 PostgreSQL 转义所有不可打印的字符,更多详细信息请参见 postgresql documentation,尤其是第 8.4.2 节

      【讨论】:

        猜你喜欢
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        • 2019-03-09
        • 2021-06-21
        • 2011-11-03
        相关资源
        最近更新 更多