【问题标题】:Perl translation from Ukrainian to EnglishPerl 从乌克兰语到英语的翻译
【发布时间】:2021-09-24 03:40:26
【问题描述】:

我正在将编码字符转换为普通字符串。但它不起作用

代码如下:

use strict;
use warnings;
use Encode;

my $text = "\x{d1}\x{84}\x{d1}\x{96}\x{d0}\x{bd}\x{d1}\x{81}\x{d1}\x{8c}\x{d0}\x{ba}\x{d0}\x{b0}";
my $decode_text = decode("UTF-8", $text);

print $decode_text;
print "\n";

我得到的输出为:

фінська

输出不是正常的字符串

我希望输出是:

Finnish

有人可以帮忙吗?

提前致谢

【问题讨论】:

  • 你不想要解码,你想要翻译。
  • @clamp 翻译的意义,你有例子吗?
  • 任何答案将不胜感激
  • @clamp,不,应该是这个问题。听起来很冒昧,当他们说“普通字符串”时,OP显然意味着“英语”。但是,关于工具和库的建议是题外话,所以我们无能为力。

标签: perl utf-8 decode encode


【解决方案1】:

让我们看看你有什么。

$ perl -M5.010 -MEncode=decode -Mcharnames=:full -e'
   my $utf8 = "\x{d1}\x{84}\x{d1}\x{96}\x{d0}\x{bd}\x{d1}\x{81}\x{d1}\x{8c}\x{d0}\x{ba}\x{d0}\x{b0}";
   my $ucp = decode("UTF-8", $utf8);
   say sprintf "U+%06X %s", $_, charnames::viacode($_) for unpack("W*", $ucp);
'
U+000444 CYRILLIC SMALL LETTER EF
U+000456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
U+00043D CYRILLIC SMALL LETTER EN
U+000441 CYRILLIC SMALL LETTER ES
U+00044C CYRILLIC SMALL LETTER SOFT SIGN
U+00043A CYRILLIC SMALL LETTER KA
U+000430 CYRILLIC SMALL LETTER A

这是фінська,所以你得到了预期的输出。

也就是说,фінська 对于Finnish 来说似乎是乌克兰语。

decode 'UTF-8' 从 UTF-8 转换为 Unicode 代码点。它不执行自然语言翻译。为此,您将需要一些工具、库、API 等来执行该任务,并且不允许对此类事物提出建议。但至少你知道你现在需要什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多