如何让PHP接受ISO-8859-1字符?


How do I get PHP to accept ISO-8859-1 characters in general?

这件事已经困扰我很多年了,我想一劳永逸地弄清这件事的真相。我有一个关联数组,其中的字段使用ISO-8859-1字符定义。例如:

array("utført" => "red");

我还从文件中加载了另一个数组。我在浏览器中打印了这个数组,检查Æ、Ø和Å等值是否完好无损。我试着比较这些数组中的两个字段,然后我被消息扇了一巴掌:

未定义索引:utfã

我忍不住哭泣。每次我在脚本中使用UTF-8以外的字母时,它们都会在某些时候被转换成ã¸r或类似的废话。

我的脚本文件是用ISO-8859-1编码的,我加载数据的文档是相同的,我试图保存数据的MySQL表也是如此。

所以我能得出的唯一结论是PHP不接受任何字符集到它的代码中,我必须以某种方式强制PHP使用挪威语。

谢谢你的建议

仅供参考,我不会接受"只是不要使用这些字符"或"只是在文件加载时用UTF等效替换这些字符"或任何其他黑客解决方案

的任何答案。

当您从外部文件读取数据时,请尝试将其转换为正确的编码。

我有这样的想法…

  $f = file_get_contents('externaldata.txt');
  $f = mb_convert_encoding($f, 'iso-8859-1');
  // from this point deal with $f whatever you want

另外,查看mb_convert_encoding()手册了解更多信息。