在UTF8网页上显示ISO-8859-2中编码的数据库数据

时间:2015-02-21 16:25:13

标签: php postgresql encoding utf-8 silex

我需要显示存储在Postgresql数据库中并在SQL_ASCII中编码的数据(我无法更改数据库编码)。应用程序是用PHP编写的(使用Silex框架和Doctrine DBAL),一般来说应用程序中使用的字符集是UTF8。

有什么方法可以自动将数据从ASCII转换为UTF8编码并正确显示数据?

谢谢!

编辑:postgresql数据库中的数据以ISO-8859-2编码存储。

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)

您可以使用iconv功能。 这个问题已经被问到here