0

我正在使用 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 编码的。

4

2 回答 2

1

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

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

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

于 2013-09-17T12:20:26.957 回答
0

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

于 2013-09-17T12:14:48.113 回答