我有一个 PostgreSQL 数据库,它使用一种神秘的文本编码,我无法更改它。有没有办法以透明的方式(对于知情的客户端)以 UTF-7 格式存储文本,以便数据库引擎不会抱怨它无法转换 Unicode 字符,但客户端仍然可以使用任何 Unicode 字符?我可以手动进行此转换,但我希望有一种方法可以在不进行手动转换的情况下完成此转换。
答案1
您可以使用SQL_ASCII
,它告诉数据库透明地传递文本字节而不进行任何验证或转换。
这通常是一个糟糕的想法,会导致数据库中出现不兼容和不匹配的文本编码的可怕混合,一些应用程序插入 UTF-8,其他应用程序插入 latin-1 等。但是,如果您需要使用数据库实际上无法理解的编码,这是一个选择。
您的替代方案是为 PostgreSQL 添加对 utf-7 的支持。这可能不太难,因为所有编码处理都已经很好地抽象化了。