PHP字符编码错误:他们是如何做到的


PHP Character Encoding Error: How they do it?

问题:

我有一个Textarea,除了XML作为内容和post到服务器。如果所有Ascii字符都在那里,它可以正常工作,但是当我们将数据放在希伯来语中时,simplexml_load_string无法加载数据,提示无效的XML,因为数据编码破坏了已发布的数据。

我做了什么:

  1. 我设置了UTF-8的HTML元标签我设置了php header内容设置为UTF-8
  2. 我有MySQL设置为'SET NAMES utf8
  3. print_r(iconv_get_encoding('all'));时,将所有三个值打印为ISO-8859-1
  4. 当我打印$_POST时,它在浏览器上显示希伯来字符很好[在浏览器视图源上],但功能仍然失败。

  5. 当我更改php.ini将iconv编码为UTF-8时,所有工作正常。

然而

:同样的服务器有100个Wordpress安装运行希伯来网站,他们没有这样的问题。

所以,我的问题是:为什么我的代码失败,但wordpress或任何其他开源软件的编码工作得很好。我确实尝试将iconv设置为utf-8作为第一个可执行行,但对我来说没有任何改变。

我不确定我的问题是否解释得很好,我的问题是否清楚,如果不是,请让我知道。谢谢。

编辑:我确实尝试了utf8_encodeutf8_decode函数,但它们也失败了。

您需要使用mb_internal_encoding('UTF-8')来告诉php您正在使用的编码。这样你就覆盖了php.ini中的设置。