gpt4 book ai didi

linux - 如何将 "binary text"转换为 "visible text"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:19 24 4
gpt4 key购买 nike

我有一个充满非 ASCII 字符的文本文件。我无法通过 file 检测到编码或 enca .

file non_ascii.txt
non_ascii.txt: Non-ISO extended-ASCII text

enca non_ascii.txt
Unrecognized encoding

但是我在Windows Notepad++中可以正常打开

编辑:上面的表述会引起误解。非常遗憾。事实上,我从原始文件中挑选了一些部分并将它们放入新的文本文件中,然后在 Notepad++ 中打开。

这两个部分如下所示。它们被 Notepad++ 以两种不同的方式解码。 enter image description here

enter image description here

问题:

  1. 如何检测 linux 下的文件编码?
  2. 如何恢复 <F1><EE><E9><E4><FF> 代表的字符?我无法通过“grep 'сойдя' win.txt”获得结果,即使“сойдя”被编码为 <F1><EE><E9><E4><FF>

文件内容切片如下:

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>

最佳答案

您的问题实际上有两个部分:(1) 我如何识别未知编码以及 (2) 我如何将其转换为有用的东西?

第一部分是真正的挑战,确实无法用普遍的术语来回答——在一般情况下,没有可靠的方法来识别未知的 8 位编码。一些编码会给你很好的提示(UTF-8 是一个很好的例子),在很多情况下,如果你很清楚文本应该代表什么,问题就可以解决。

A mapping of 8-bit character meanings可能会有帮助(咳咳,链接是我的),在这种情况下会快速提示 Windows code page 1251 .感谢十六进制转储和具有您期望的表示的图片!

有了这些,转换就很容易了。

iconv -f cp1251 -t utf-8 non_ascii.txt >utf8.txt

假设您的 Linux 系统设置为在终端使用 UTF-8,您的 grep 命令现在应该可以在 utf-8.txt 上运行。

有些文本是“ANSI”(无论如何这是一个伪造的术语)的迹象可能只是转移注意力——据我所知,你摘录中的所有内容看起来都像是格式正确的 CP1251。

一些 tools like chardet做一个合理的工作,至少引导你朝着正确的方向前进,尽管你必须明白,就像人类专家一样,他们必须猜测文本应该代表什么。在极端情况下,他们只是没有足够的信息来正确猜测,要么是因为有几个候选编码几乎没有差异(例如,Latin-1 vs Latin-9 vs Windows-1252,所有这些也与前 128 个位置的普通 7 位 US-ASCII)或者因为输入不包含足够的信息来建立任何通用模式。

关于linux - 如何将 "binary text"转换为 "visible text"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com