我正在读取PHP中的CSV文件,据我所知 - 这些类型的文件可以包含任何由hoomans omg 发明的编码等等...我猜我有一个MacRoman ANSI编码的CSV,我正在使用Mac。
到目前为止,这么好(不是很好,但那是另一个话题)..现在,在迭代这些行时,我有一个像这样的值:
Z�rich
显然,它应该是“苏黎世” - “ü”缺失......
现在,我几乎尝试过任何事情...... mb_detect_encoding正在说“假”,所以,他不明白它是什么......
然后我在这里找到了Sebastian Grignoli的天才课 - > Detect encoding and make everything UTF-8
看起来不错,但......我得到的只是:
ZŸrich
不是我所预期的“ü”:D
现在我发现,“utf8_encode”会以某种方式起作用,它会产生:
Z\u009Frich
但是......现在怎么样?如果我把它直接放在数据库中,最终的值是“Zrich”,这意味着它仍然不是真正的UTF-8,或者数据库刚刚与转义的变体挣扎?当我对该值进行mb_detect_encoding时,他现在说“UTF-8”..很好..但我怎么能走得更远呢?我怎样才能在UTF-8中以正确的方式获得“苏黎世”?
答案 0 :(得分:3)
您可以使用iconv
进行转化。在我的安装中,MacRoman编码只调用"MAC"
:
$city = "Z\x9frich";
$city = iconv("MAC", "UTF-8", $city);
echo $city; // Output: Zürich
答案 1 :(得分:1)
尝试使用iconv首先转换所有文件。然后导入。 或者迭代每一行并用iconv转换。
您必须知道文件的原始编码。