我有一个文本文档,本来应该是用俄语写的,但它似乎是 ascii:
Óñòàíîâêà:
1)Çàïóñêàåì QuidamStudioSetup3.15.exe
2)Ïðè çàïðîñå ñåðèéíîãî íîìåðà ââîäèì
我怎样才能将其转换为可读的Unicode俄文字符?
答案1
这是不是“ASCII” 也不是“ASCII Russian”。
在 Unicode 普及之前,大多数计算机系统都使用 ISO-8859 字符编码,这种编码共有 16 种,每种都适用于不同的地区(中欧、西里尔、希腊……)。Windows 有自己的“代码页”,非常相似,但在未使用的范围内有额外的字形。所有这些字符编码都是 8 位的,仅在后半部分(128-255)有所不同。
这些编码的问题在于程序几乎不可能确定哪个编码用于保存文件,除非明确指定(例如在 HTML 页面中;但是,纯文本文件没有此类元数据标签)。阅读 Wikipedia 文章莫吉巴克以获得更详细的描述。
在您的示例中,文档是使用以下方式保存的:Windows-1251(西里尔文),但你的程序会把它读成Windows-1252(西欧),在相同位置的字符有很大差异。对于计算机来说,它看起来完全没问题——它不理解语言或脚本。(虽然有些程序会进行统计分析以确定正确的编码——一些网络浏览器有这样的功能。)
有多种方法可以将此类文本转换为 Unicode:
使用您的网络浏览器:
将
.txt
文件拖入浏览器。从查看 → 字符编码(或者Firefox → Web 开发人员 → 字符编码, 或者扳手 → 工具 → 编码),根据您的情况选择正确的原始编码:“Cyrillic (Windows-1251)”。
使用记事本2文本编辑器:
打开文件。
从文件 → 编码 → 重新编码...,选择正确的原始编码。
使用 GNU
iconv
,Windows 二进制文件来自操作系统或者Win32 版 Gettext。图标-fcp1251-t utf-8 <我的文件.txt>我的文件.fixed.txt
Windows 记事本将正确读取 UTF-8 和 UTF-16 编码的文本。