非 ISO 扩展 ASCII 文本

use*_*219 7 unix shell

当我试图知道文件 all.txt 的编码时使用

$ file all.txt
Run Code Online (Sandbox Code Playgroud)

它显示此消息

all.txt: Non-ISO extended-ASCII text, with very long lines
Run Code Online (Sandbox Code Playgroud)

这种编码的非 ISO 扩展 ASCII 文本是什么类型的?

因为我需要将它转换为另一种编码所以我需要知道这个文件的编码

有什么帮助吗?

Jan*_*dec 9

它看起来不像 utf-8 或 iso-8859-1。它可能是其他任何东西。它甚至可能根本不是文本。这种类型是对不包含零字节的任何内容的回退描述。

即使它实际上是一个文本文件(扩展名表明它可能是),不幸的是没有自动方法来找出编码,因为大多数编码具有相同范围的有效代码。utf-8 可以非常自信地分辨出来,但除此之外,它需要手动检查。

首先,您必须找出文件使用的语言,以了解什么是正确的内容,什么是乱码,并获得可能的编码列表。因为有无数的编码,但只有少数用于任何特定语言。

比您需要尝试从每种可能的编码转换文件,并且对于技术上成功的每次转换(不幸的是大多数转换)查看结果并检查它是否正确。

拼写检查器可能会帮助您进行审核,因为不正确的转换会导致更多的拼写检查器错误。

对于转换,您可以使用iconv(1),它是从 GNU/Linux 或recode. recode有更多的选择和更好的错误处理。


cku*_*jau 7

这不适合评论,所以这里是:我手上也有一个奇怪的文件:

$ 文件系统信息.txt 
systeminfo.txt:非 ISO 扩展 ASCII 文本

我知道这是由德国 WindowsXP 安装生成的,并包含一些变音符号,iconv无法将其转换为合理的内容:

$ iconv -t UTF-8 systeminfo.txt > systeminfo_utf8.txt 
iconv:位置 308 处的非法输入序列

但是由于iconv知道这么多编码,我使用了蛮力方法来找出有效的编码:

$ iconv --list | sed 's/\/\/$//' | 排序> encodings.list
$ for a in `cat encodings.list`; 做
  printf "$a "
  iconv -f $a -t UTF-8 systeminfo.txt > /dev/null 2>&1 \
    && echo "ok: $a" || 回声“失败:$a”
完成 | 开球结果.txt

然后我会result.txt仔细检查并寻找没有失败的编码。在我的情况下,-f CP850 -t UTF-8工作得很好,并且元音仍然存在,只是现在以 UTF-8 编码:-)