这件事已经困扰我很多年了,我想一劳永逸地弄清这件事的真相。我有一个关联数组,其中的字段使用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()手册了解更多信息。