我正在尝试阅读我认为是俄语的文档,但我不确定我所看到的是否正确编码。文本看起来像这样:
Ãåíåðèðóåòìàòðèöóñëó÷àéíûõ÷èñåëâäèàïàçîíåîò-1äî1
(显示为几个特殊的A和o)
在Firefox中打开时。在其他程序中,它看起来像这样:
-1 1
(显示为几个问号)
有没有希望翻译这个?
答案 0 :(得分:5)
解码为CP1251。
>>> print u'Ãåíåðèðóåò ìàòðèöó ñëó÷àéíûõ ÷èñåë â äèàïàçîí'.encode('latin-1').decode('cp1251')
Генерирует матрицу случайных чисел в диапазон
答案 1 :(得分:1)
您需要确定使用了多个可能的Cyrillic代码集中的哪一个 - 链接的网站列出了十几种可能性,其中ISO 8859-5和CP-1251可能是最有可能的。
您可以获得其中一个翻译网站(Babelfish或Google,毫无疑问其他人)可以提供帮助。但是,您可能必须从原始代码集转换为UTF-8才能使其正常工作 - 只需复制上面的字节就无效了。
将原始文本复制到Mac时,它被编码为UTF-8:
0x0000: C3 83 C3 A5 C3 AD C3 A5 C3 B0 C3 A8 C3 B0 C3 B3 ................
0x0010: C3 A5 C3 B2 20 C3 AC C3 A0 C3 B2 C3 B0 C3 A8 C3 .... ...........
0x0020: B6 C3 B3 20 C3 B1 C3 AB C3 B3 C3 B7 C3 A0 C3 A9 ... ............
0x0030: C3 AD C3 BB C3 B5 20 C3 B7 C3 A8 C3 B1 C3 A5 C3 ...... .........
0x0040: AB 20 C3 A2 20 C3 A4 C3 A8 C3 A0 C3 AF C3 A0 C3 . .. ...........
0x0050: A7 C3 AE C3 AD C3 A5 20 C3 AE C3 B2 20 2D 31 20 ....... .... -1
0x0060: C3 A4 C3 AE 20 31 0A .... 1.
0x0067:
所以,为了用Perl翻译它,我首先使用Encode模块将UTF-8字符串转换回Latin-1,然后我告诉Perl将Latin-1视为CP -1251并将其转换回UTF-8:
#!/usr/bin/env perl
use Encode qw( from_to );
my $source = 'Ãåíåðèðóåò ìàòðèöó ñëó÷àéíûõ ÷èñåë â äèàïàçîíå îò -1 äî 1';
# from_to changes things 'in situ'
my $nbytes = from_to($source, "utf-8", "latin-1");
# print "$nbytes: $source\n";
$nbytes = from_to($source, "cp-1251", "utf-8");
print "$nbytes: $source\n";
输出结果为:
哪个Babelfish翻译为:
和Google翻译为:
由于Mac上的设置(我的终端默认使用UTF-8等),因此需要初始的UTF-8到Latin-1转换:YMMV。