【发布时间】:2012-01-02 22:44:56
【问题描述】:
我有 CSV 格式的数据,这些数据经过了严重的字符编码处理,可能在不同的软件应用程序(LibreOffice Calc、Microsoft、Excel、Google Refine、自定义 PHP/MySQL 软件;在 Windows XP、Windows 7 上)之间来回切换和来自世界各地的 GNU/Linux 机器......)。似乎在这个过程中的某个地方,非 ASCII 字符已被严重扰乱,我不确定如何解扰它们或检测模式。手动执行此操作将涉及数千条记录...
这是一个例子。对于“Trois-Rivières”,当我用 Python 打开这部分 CSV 文件时,它说:
Trois-Rivi\xc3\x83\xc2\x85\xc3\x82\xc2\xa0res
问题:我可以通过什么过程来逆转
\xc3\x83\xc2\x85\xc3\x82\xc2\xa0
回来
è
即我怎样才能解读这个?这怎么可能一开始就被打乱了?如何对这个 bug 进行逆向工程?
【问题讨论】:
-
它看起来像 utf8 over iso over utf8... 也许你应该试试
iconv? -
我怀疑
\xc3\x83\xc2\x85\xc3\x82\xc2\xa0转换为单个è。 -
echo -e 'Trois-Rivi\xc3\x83\xc2\x85\xc3\x82\xc2\xa0res' | file -: /dev/stdin: UTF-8 Unicode 文本,带有 LF、NEL 行终止符 -
它看起来已经损坏无法修复(可能是由于在此之前的错误字符集转换)。我看不出比 utf8 更理智的解释,但即使那样它看起来也已经损坏了
-
在将 double UTF-8 误解为 ISO-8859-1 之后,它看起来像 UTF-8,但是以这种方式解码它会得到 U+0160 (Š) 而不是预期 U+00E8 (è)。
标签: character-encoding non-ascii-characters scramble