【发布时间】:2014-08-17 01:30:07
【问题描述】:
我对编码问题有点陌生
我有从客户端获取的 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获取错误字符的十六进制值我可以说�字符实际上在文件中,编码问题是客户端
【问题讨论】:
-
你能使用显示每个字符的十六进制值的编辑器吗?然后发回
é和其他有问题的值的结果,这将有助于我们猜测编码。 -
告诉我们 CSV 文件数据应该使用什么语言(英语、法语、中文……随便),然后我们才能为您的数据找到正确的编码方案
-
如果您致力于测试编辑器中所有可用的编码方案,请先复制原始文件,这将导致不可逆转的数据丢失
-
@TimPietzcker : vim "ga" 命令返回 65533, Hexa fffd, Octal 177775
-
@TimPietzcker :我猜这意味着文件本身包含 � 字符并且编码问题是客户端的。