如何读取古代编码的文本文件?

Al *_*ger 0 character-encoding

有一个名为 Moby 的公共项目,其中包含多个单词列表。一些文件包含欧洲字母符号,并且是在 Unicode 之前创建的。自述文件,日期为 1993 年,内容如下:

“英语中常用的外来词通常都包含变音符号,例如锐音 e 用 ASCII 142 表示。”

维基百科说最后一个 ASCII 符号的编号是 127。

例如,此文件:http://www.gutenberg.org/files/3203/files/mobypos.txt包含我无法在任何各种拉丁编码中读取的符号。(在以 B 开头的单词部分的最后,C 字母之前,有很多这样的符号。)

有人可以建议应该使用什么编码来读取此文件,或者如何将其转换为某种可读的现代编码?

mat*_*att 5

一些研究表明,该页面的编码是Mac OS Roman,位于\xc3\xa9位置 142。查看您链接的页面并更改编码(在 Chrome 中,查看 \xe2\x86\x92 Encoding \xe2\x86\x92 Western ( Macintosh))似乎正确显示所有单词(它错误地报告了 ISO-8859-1)。

\n\n

您如何处理这个问题取决于您使用的语言/工具。Here\xe2\x80\x99s 是如何使用 Ruby 转换为 UTF-8 的示例:

\n\n
require \'open-uri\'\n\ns = open(\'http://www.gutenberg.org/files/3203/files/mobypos.txt\').read\ns.force_encoding(\'macroman\')\ns.encode!(\'utf-8\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

你是对的,ASCII 只到达位置 127(它\xe2\x80\x99s 是一个 7 位编码),但是有大量的 8 位编码是 ASCII 的超集,人们有时将它们称为\ xe2\x80\x9c 扩展 ASCII\xe2\x80\x9d。看来,无论谁写了你提到的自述文件,都不知道\xe2\x80\x99 的各种编码,并认为他当时碰巧使用的编码是通用的。

\n\n

对于此类问题,\xe2\x80\x99t 没有通用的解决方案,因为没有保证的方法可以从文本本身确定某些文本的编码。在这种情况下,我只是使用维基百科来浏览一些内容,直到找到匹配的内容。如果您想了解更多信息,Joel Spolsky\xe2\x80\x99s 文章《每个软件开发人员绝对必须了解 Unicode 和字符集(没有借口!)的绝对最低要求》是开始阅读有关字符集和编码的好地方。

\n