我需要显示存储在Postgresql数据库中并在SQL_ASCII中编码的数据(我无法更改数据库编码)。应用程序是用PHP编写的(使用Silex框架和Doctrine DBAL),一般来说应用程序中使用的字符集是UTF8。
有什么方法可以自动将数据从ASCII转换为UTF8编码并正确显示数据?
谢谢!
编辑:postgresql数据库中的数据以ISO-8859-2编码存储。
答案 0 :(得分:2)
UTF8是故意设计为与真正的7位ASCII兼容,因此数据库中任何128个字符的字符都是有效的UTF8,因此可以按原样使用。
但是,如the Postgres manual page on encodings中所述,SQL_ASCII
字符集实际上不会拒绝ASCII范围之外的字符:
当服务器字符集为SQL_ASCII时,服务器根据ASCII标准解释字节值0-127,而字节值128-255作为未解释的字符。 ... 因此,这个设置并不是使用特定编码的声明,而是对编码的无知声明。
因此,如果数据中包含任何非ASCII字符,则需要知道它们存储在哪个实际字符集中(例如ISO 8859-15或Windows CP1252),并使用{{{{{{{{ 1}}或iconv()
。
答案 1 :(得分:0)