如何重新编码混合编码的文本文件

Ste*_*hen 7 character-encoding conversion

我有一个 ASCII 的日志文件,除了几个 UTF-8 字符(我可以在以后的版本中修复)。

目前,我需要弄清楚如何通过 gedit/less 等使这个文件进入可查看/可搜索/可编辑状态。

enca -L none file返回7bit ASCII characters Surrounded by/intermixed with non-text data

enconv -L none -X ASCII fileenconv -L none -X UTF-8 file“成功”但实际上并没有改变任何东西。

我该如何修复这个文件?

更新(在一些答案之后):

实际上,如下所述(给所有人投票:)),ASCII + UTF-8 就是 UTF-8。我拥有的是

0003bbc0  28 4c 6f 61 64 65 72 29  20 50 61 74 69 65 6e 74  |(Loader) Patient|
0003bbd0  20 00 5a 00 5a 00 5a 00  38 00 31 00 30 00 34 00  | .Z.Z.Z.8.1.0.4.|
0003bbe0  20 6e 6f 74 20 66 6f 75  6e 64 20 69 6e 20 64 61  | not found in da|
0003bbf0  74 61 62 61 73 65 0d 0a  32 36 20 53 65 70 20 32  |tabase..26 Sep 2|
Run Code Online (Sandbox Code Playgroud)

我相信这将是一个 cp1252 类型的编码实际上,我不知道 cp1252 将是 1 个字节的 ASCII 是什么,不是吗?

顺便说一句,linux barfs 在这方面帮助我弄清楚输入文件(id 的来源)被严重编码的事实......

Gil*_*il' 2

事实上,您拥有的是 ASCII(通常以 8 位字节编码)和一点UCS-2(Unicode 仅限于基本平面 (BMP),其中每个字符被编码为两个 8 位字节),或者也许是UTF-16(UCS-2 的扩展,可以通过对 U+D7FF 以上的代码点使用多字编码来编码所有 Unicode)。

我怀疑您是否会找到一种可以立即处理这种邪恶混合物的工具。没有办法完全通用地解码该文件。就您而言,可能发生的情况是某些 ASCII 数据在某个时候被编码为 UTF-16(Windows 和 Java 喜欢 UTF-16;它们在 Unix 世界中几乎闻所未闻)。如果您假设原始数据都是 ASCII,则可以通过删除所有空字节来恢复可用的文件。

<bizarre tr -d '\000' >ascii
Run Code Online (Sandbox Code Playgroud)