我对编码问题不熟悉
我有来自客户端的CSV文件,无法弄清楚它是如何编码的
当我尝试使用mb_convert_encoding($ string,“UTF-8”)或utf8_encode($ string)将它们编码为utf8时,我的“é”重音符号在vim或openoffice中显示为 ,我得到“� “
我用iconv和mb_convert_encoding尝试了一些拉丁语编码(ISO-8859-1,ISO-8859-15)到utf8
我还尝试了一种方法,我发现从cp1250转换为utf8,另一种从macintosh转换为utf8
仍然没有运气。有没有办法找到解决方案而不要求客户端将其csv编码更改为utf8?
非常感谢!
修改 为了找到正确的编码,我解析了mb_list_encodings()中列出的所有编码,并试图用它们中的每一个转换为UTF-8。 它们都不能呈现“é”。我只是要求客户在出口他的csv时使用utf-8
使用vim获取错误字符的十六进制值我可以说 字符实际上在文件中,编码问题是客户端
答案 0 :(得分:2)
你需要知道文件的编码是什么,句号。如果您不知道,请尝试将文档视为一堆不同的编码(例如,在某些文本编辑器中,您可以选择文件→使用编码重新打开... 或类似的此类操作) ,直到找到该文件有意义的编码。
那,或者将文件从不同的编码转换为您的首选编码。只是mb_convert_encoding($string, "UTF-8")
无济于事,它不能神奇地猜测从转换的内容。尝试:
echo mb_convert_encoding($string, 'UTF-8', 'ISO-8859-1');
echo mb_convert_encoding($string, 'UTF-8', 'SJIS');
...
直到找到文档看起来正确的编码。
如果所有猜测都没有帮助,请让文档的发起人注意他们正在使用的编码,或者明确告诉他们如何为您提供所需编码的文档。