翻译不可读的俄语文本

问题描述 投票:0回答:3

我正在尝试阅读我认为是用俄语编写的文档,但我不确定我所看到的内容是否编码正确。文字看起来像这样:

ñåíåðèðóåò ìàòðèöó ñëó÷àéíûõ ÷èñåë â äèàïàçîíå îò -1 äî 1

(显示为几个特殊的A和o)

在 Firefox 中打开时。在其他程序中,它看起来像这样:

���������� ������ ��������� ����� � ��������� �� -1 �� 1

(显示为几个问号)

有希望翻译这个吗?

unicode character-encoding translation
3个回答
5
投票

解码为CP1251。

>>> print u'Ãåíåðèðóåò ìàòðèöó ñëó÷àéíûõ ÷èñåë â äèàïàçîí'.encode('latin-1').decode('cp1251')
Генерирует матрицу случайных чисел в диапазон

1
投票

您需要确定使用了多种可能的 Cyrillic 代码集中的哪一种 - 链接的站点列出了十多种可能性,其中 ISO 8859-5 和 CP-1251 可能是最有可能的。

您也许可以获得翻译网站之一(BabelfishGoogle,毫无疑问还有其他网站)的帮助。但是,您可能必须从原始代码集转换为 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";

输出为:

  • 102: Генерирует матрицу случайных чисел в диапазоне от -1 до 1

Babelfish 翻译为:

  • 102:它生成 -1 到 1 范围内的随机数矩阵

谷歌翻译为:

  • 102:生成一个范围从-1到1的随机数矩阵

由于我的 Mac 上的设置(我的终端默认使用 UTF-8 等),需要将初始 UTF-8 转换为 Latin-1:YMMV。


0
投票

如何将这些罗马字符全局替换为相应的西里尔字母。我实际上需要在我的文件中以某种方式转换它,该文件突然出现罗马化。

© www.soinside.com 2019 - 2024. All rights reserved.