为什么结果是这样子的?Linux大牛帮看一下

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  为什么用GB2312编码的文件用file命令查看会得到ISO-8859这个结果?追答ISO-8859 是一个系列,从 -1 到 -15 ,主要是欧洲语言。

  而 GB 系列编码是变长编码,包括 UTF8 ,他们表示的字符从1字节到4字节都有的长度(GB2312 只到 2 字节)。这种状态下,英文都是单字节编码,而且我记得常用中文都集中在 2 字节的长度,很少会用到 3、4 字节。

  另外,Windows 的记事本会在 txt 的文件最开始增加一个 4 字节的标记符号来表明文件的编码。

  所以,具体为什么识别成这样不好说,看看你的文件到底是什么结构的。比如 file 好像只看最开始部分,如果你的文件最开始都是英文,那么很有可能被识别成 iso-8859 。另外,你传输时如果文件损坏,或者文件本来就是坏的,也会影响 file 的识别。即使后面看着会恢复正常,但前面的错误不影响阅读但也会影响 file 的工作。

  能否在 Linux 下面用图形界面的编辑器打开?或者用 U 盘拷贝到 Windows 下面打开查看?

  乱码的话你看看能不能修改编码(Linux 图形界面下面 kwrite 和 gedit 都有这个功能)后正常显示了么?

  唉,我做个实验给你看看(注意:我的Linux系统和运程终端都是用UTF-8字符集)

  恍惚间好像 GB2312 确实有这种问题,会导致和西欧的扩展字符集识别冲突。当时的技术限制,中文不需要西欧字符的支持所以就是在 7bit 的 ASCII 标准上加第 8bit 被识别成中文。

  ISO-8859 就是这个 8bit 的欧洲字符集,GB2312 是基于 7bit 的 ASCII 字符集混合第 8 bit 为 1 的字符都是中文,是一个单字节双字节混合编码的字符集编码标准。好像是这么表示太简单,容易和欧洲的 8bit 表示法混乱。

  另外,现在没有完美的编码识别算法。如果有完美识别算法,也就不存在编码混乱导致乱码的问题了。更多追问本回答由提问者推荐答案纠错评论

相关阅读