Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在UTF8网页上显示ISO-8859-2编码的数据库数据_Php_Postgresql_Encoding_Utf 8_Silex - Fatal编程技术网

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

Php 在UTF8网页上显示ISO-8859-2编码的数据库数据,php,postgresql,encoding,utf-8,silex,Php,Postgresql,Encoding,Utf 8,Silex,我需要显示存储在Postgresql数据库中并以SQL\ U ASCII编码的数据(我无法更改数据库编码)。应用程序是用PHP编写的(使用Silex框架和DBAL),通常应用程序中使用的字符集是UTF8 是否有任何方法可以自动将数据从ASCII转换为UTF8编码并正确显示数据 谢谢 编辑:postgresql数据库中的数据以ISO-8859-2编码方式存储。UTF8故意设计为与真正的7位ASCII兼容,因此数据库中来自这128个字符的任何字符都已经是有效的UTF8,因此可以按原样使用 但是,如中

我需要显示存储在Postgresql数据库中并以SQL\ U ASCII编码的数据(我无法更改数据库编码)。应用程序是用PHP编写的(使用Silex框架和DBAL),通常应用程序中使用的字符集是UTF8

是否有任何方法可以自动将数据从ASCII转换为UTF8编码并正确显示数据

谢谢


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

UTF8故意设计为与真正的7位ASCII兼容,因此数据库中来自这128个字符的任何字符都已经是有效的UTF8,因此可以按原样使用

但是,如中所述,
SQL\u ASCII
字符集实际上并不拒绝ASCII范围以外的字符:

当服务器字符集为SQL_ASCII时,服务器将根据ASCII标准解释字节值0-127,而字节值128-255则视为未解释的字符。 ... 因此,该设置与其说是一种声明,还不如说是一种声明,表明对编码一无所知

因此,如果数据中有任何非ASCII字符,则需要知道它们存储在哪个实际字符集中(例如ISO 8859-15或Windows CP1252),并使用类似于
iconv()
mb\u convert\u encoding()
的方法将它们转换为UTF8。您可以使用该函数。
这个问题已经被问过了。

是PostgreSQL DB,而不是MySQL。使用
iconv
可以将一个由本地字符集表示的字符串转换为另一个字符集表示的字符串。当指出一个现有/重复的问题时,最好作为注释而不是答案。一旦你有了足够的声誉,你就可以投票正式将问题标记为重复。我更喜欢即时进行转换,因为有很多地方我必须手动添加iconv转换。这就是我害怕的…:)是的,实际的字符集是ISO-8859-2,首选的方法是自动进行转换。@farfocello“Automatic”是相对的-它只是意味着它发生在您正在编写的代码看不见的地方。例如,有一种方法可以将转换逻辑添加到DBAL或ORM层。