PHP:CSV文件中的未知编码

PHP:CSV文件中的未知编码,php,csv,encoding,utf-8,Php,Csv,Encoding,Utf 8,我对编码问题有点陌生 我有一个CSV文件,我从一个客户那里得到,但我不知道它是如何编码的 我的“é”口音看起来像� 在vim或openoffice中,当我尝试使用mb_convert_编码($string,“UTF-8”)或utf8_编码($string)将它们编码为utf8时,我得到“ë½” 我尝试了一些拉丁文编码(ISO-8859-1,ISO-8859-15)到utf8,使用iconv和mb_convert_编码 我还尝试了一种从cp1250转换为utf8的方法,以及另一种从macintos

我对编码问题有点陌生

我有一个CSV文件,我从一个客户那里得到,但我不知道它是如何编码的

我的“é”口音看起来像� 在vim或openoffice中,当我尝试使用mb_convert_编码($string,“UTF-8”)或utf8_编码($string)将它们编码为utf8时,我得到“ë½”

我尝试了一些拉丁文编码(ISO-8859-1,ISO-8859-15)到utf8,使用iconv和mb_convert_编码

我还尝试了一种从cp1250转换为utf8的方法,以及另一种从macintosh转换为utf8的方法

还是不走运。有没有办法在不要求客户将其csv编码更改为utf8的情况下找到解决方案

非常感谢

编辑 为了找到正确的编码,我解析了mb_list_encodings()中列出的所有编码,并尝试将它们转换为UTF-8。 他们中没有一个人能说出“é”。我只要求客户在导出csv时使用utf-8


使用vim获取错误字符的十六进制值,我可以说� 字符实际上在文件中,编码问题是客户端

您需要知道文件的编码是什么,句号。如果您不知道,请尝试将文档视为一组不同的编码(例如,在某些文本编辑器中,您可以选择文件)→ 使用编码重新打开…或类似的操作),直到找到文件所使用的编码

或者将文件从不同的编码转换为您首选的编码。仅仅
mb\u convert\u编码($string,“UTF-8”)
是没有帮助的,它无法神奇地猜出转换的内容。尝试:

直到找到文档看起来正确的编码

如果所有这些猜测都无济于事,请文档创建者注意他们使用的编码,或者明确告诉他们如何以您需要的编码为您提供文档


阅读。

您能使用显示每个字符十六进制值的编辑器吗?然后返回
é
的结果和其他有问题的值,这将有助于我们猜测编码。告诉我们CSV文件数据应该使用什么语言(英语、法语、中文…无论什么),只有这样我们才能为您的数据找到正确的编码方案制作原始文件的副本首先,如果您致力于测试编辑器中所有可用的编码方案,这将导致不可逆转的数据丢失data@TimPietzcker:vim“ga”命令返回65533,十六进制fffd,八进制177775@TimPietzcker:我猜这意味着文件本身包含� 字符和编码问题是客户端的。每个人都应该阅读关于编码的经典文章+1用于链接;)嗯,我写得太快了:我只是想添加mb_convert_编码($string,“UTF-8”)将从内部编码(在我的例子中是ISO-8859-1)编码到UTF-8。因此,它相当于utf8_encode(),它解决了我的大多数编码问题
echo mb_convert_encoding($string, 'UTF-8', 'ISO-8859-1');
echo mb_convert_encoding($string, 'UTF-8', 'SJIS');
...