Php 如何在读取CSV文件时修复编码?
我正在用php阅读一个CSV文件,据我所知,这类文件可以使用hoomans omg发明的任何编码,等等。。。我想我有一个MacRoman ANSI编码的CSV,我在Mac上工作 到目前为止,还不错(一点都不好,但这是另一个话题)。。现在,在遍历这些行时,我得到了如下值:Php 如何在读取CSV文件时修复编码?,php,csv,encoding,utf-8,Php,Csv,Encoding,Utf 8,我正在用php阅读一个CSV文件,据我所知,这类文件可以使用hoomans omg发明的任何编码,等等。。。我想我有一个MacRoman ANSI编码的CSV,我在Mac上工作 到目前为止,还不错(一点都不好,但这是另一个话题)。。现在,在遍历这些行时,我得到了如下值: Z�rich 显然,它应该是“Zürich”——“Zü”不见了 现在,我几乎什么都试过了。。mb_detect_编码是“false”,所以他不明白它是什么 然后我在这里找到了塞巴斯蒂安·格里格诺利的天才课程-> 看起来不错,但
Z�rich
显然,它应该是“Zürich”——“Zü”不见了
现在,我几乎什么都试过了。。mb_detect_编码是“false”,所以他不明白它是什么
然后我在这里找到了塞巴斯蒂安·格里格诺利的天才课程->
看起来不错,但是。。。我得到的只是:
ZŸrich
不是我所期望的那样:D
现在我发现,“utf8_编码”会以某种方式工作,它会生成:
Z\u009Frich
但是。。现在怎么办?如果我把它直接放在数据库中,最终的值是“Zrich”,这意味着它仍然不是真正的UTF-8,或者db只是在与转义的变体斗争?当我对那个值进行mb_-detect_编码时,他现在说“UTF-8”。。美好的但我怎么能走得更远呢?如何在UTF-8中以正确的方式获得“Zürich”?您可能可以使用
iconv
进行转换。在我的安装中,MacRoman编码被简单地称为“MAC”:
您可能可以使用
iconv
进行转换。在我的安装中,MacRoman编码被简单地称为“MAC”:
尝试先用iconv转换所有文件。然后再导入。 或者迭代每一行并使用iconv进行转换
您必须知道文件的原始编码。首先尝试使用iconv转换所有文件。然后再导入。 或者迭代每一行并使用iconv进行转换
您必须知道文件的原始编码。存储这些值的数据库列的编码是什么?在我的应用程序中创建表格时,将字符集更改为utf8。从表格到代码再到浏览器,所有内容都是utf-8-所有内容。。这里的问题发生在我读取由用户上传的文件时,该文件是由MS Excel在任何客户端计算机上创建的,因此,该文件可以在所有内容中编码,对此我没有控制权:/(来源:)存储这些值的数据库列的编码是什么?在我的应用程序中创建表格时,将字符集更改为utf8。从表格到代码再到浏览器,所有内容都是utf-8-所有内容。。这里的问题发生在我读取由用户上传的文件时,该文件是由MS Excel在任何客户机上创建的,因此,该文件可以在所有内容中进行编码,而我无法控制:/(来源:)iconv甚至可以直接更正Z中的文本�rich to Zürich-但是你必须知道当mb_detect_编码总是返回“false”时,编码是非常困难的->所以我写了我自己的detect lik,在这里描述:很难区分单字节编码,因为每个字节序列都是有效的,不同于可变字节编码。如果你没有关于文本来源的任何信息,你必须根据字母或n-gram频率进行猜测。听起来很有趣,目前我已经实现了一种疯狂的猜测,就像php文档注释中描述的那样,但我必须用谷歌搜索你写的东西;)iconv甚至可以直接从Z更正文本�rich to Zürich-但是你必须知道当mb_detect_编码总是返回“false”时,编码是非常困难的->所以我写了我自己的detect lik,在这里描述:很难区分单字节编码,因为每个字节序列都是有效的,不同于可变字节编码。如果你没有关于文本来源的任何信息,你必须根据字母或n-gram频率进行猜测。听起来很有趣,目前我已经实现了一种疯狂的猜测,就像php文档注释中描述的那样,但我必须用谷歌搜索你写的东西;)
$city = "Z\x9frich";
$city = iconv("MAC", "UTF-8", $city);
echo $city; // Output: Zürich