我有一个非ASCII字符的文本文件。
我无法通过file
或enca
检测编码。
file non_ascii.txt
non_ascii.txt: Non-ISO extended-ASCII text
enca non_ascii.txt
Unrecognized encoding
但是我可以在Windows Notepad ++中正常打开它
编辑:上面的表达引起了误解。非常遗憾。 事实上,我选择了原始文件的一些部分并将它们放入新的文本文件中,然后在记事本++中打开。
问题:
<F1><EE><E9><E4><FF>
代表的字符?
即使“сойдя”编码为<F1><EE><E9><E4><FF>
,我也无法通过“grep'сойдя'win.txt”获得结果? 文件内容切片如下:
less non_ascii.txt
"non_ascii.txt" may be a binary file. See it anyway?
<F1><EE><E9><E4><FF>
<F2><F0><E0><EA><F2><EE><E2><E0><F2><FC><F1><FF>
<D0><F2><E9><E4><D7><E9><E7><E1><EC><E1><F3><F8>
<D1><E5><EA><F3><ED><E4>
<F0><E0><E7><E3><F0><F3><E7><EA><E8>
<EF><EE><E4><F1><F2><E0><E2><EB><FF><F2><FC>
<F0><E0><E7><E3><F0><F3><E7><EA><E5>
<F1><EE><E9><E4><F3>
<F0><E0><E7><E3><F0><F3><E7><EA><E0>
<F1><EE><E2><EB><E0><E4><E0><EB><E8>
<C1><D7><E9><E1><F0><EF><FE><F4><E1>
<CB><C1><D3><D3><C9><D4><C5><D2><C9><D4>
<F1><EE><E2><EB><E0><E4><E0><EB><EE>
<F1><EE><E9><E4><E8>
<F1><EE><E2><EB><E0><E4><E0><EB><E0>
答案 0 :(得分:3)
您的问题实际上有两个部分:(1)如何识别未知编码?(2)如何将其转换为有用的东西?
第一部分是真正的挑战,实际上无法用普遍的术语来回答 - 在一般情况下,没有可靠的方法来识别未知的8位编码。有些编码会给你很好的提示(UTF-8是一个很好的例子),在很多情况下,如果你很清楚文本应该代表什么,问题就可以解决了。
mapping of 8-bit character meanings可能会有所帮助(咳嗽,链接是我的),在这种情况下,请快速提示Windows code page 1251。感谢十六进制转储和带有您期望的图像的图片!
通过这种方式,转换很容易。
iconf -f cp1251 -t utf-8 non_ascii.txt >utf8.txt
如果您的Linux系统已设置为在终端上使用UTF-8,则grep
命令现在应在utf-8.txt
上运行。
有些文字是“ANSI”(无论如何这是一个虚假的术语)的迹象可能只是一个红色的鲱鱼 - 据我所知,你的摘录中的所有内容看起来都是格式良好的CP1251。