0

perldoc

Text::Unidecode 提供的是一个函数 unidecode(...) ,它接受 Unicode 数据

Unicode data这句话中的意思是什么?是 Perl 字符串吗?即如果在输入字符串上调用 Encode::is_utf8 或者是 unicode 字节即结果encode

4

2 回答 2

4

Text::Unidecode 不进行任何反或编码。它将可能包含非 ASCII 代码点的字符串转译为仅使用 ASCII 代码点的字符串这与以 UTF-8 编码字符串不同。

音译意味着发出类似发音的文本。例如,Unicode 但不是 ASCII 有变音符号,如ü. 这可以音译为字符串ue( \x75\x65) 或u. 如果字符ü被编码为 UTF-8,我们会得到\xC3\xBC.

如果输入仅包含 ASCII 范围内的代码点,则输出字符串等同于输入(字符串比较相等)。对于这样的输入字符串,utf8-flag 可以设置也可以不设置;这与 Perl 程序员无关

音译示例:

"über cool" → "uber cool"
"1 · 2"     → "1 * 2"
"€0.99"     → "EU0.99"
"© 2011"    → "(c) 2011"
"¼"         → "1/4"
"pure ASCII"→ "pure ASCII"
于 2013-06-21T11:02:59.647 回答
0

在 Text::Unicode 的文档中,在“Caveats”下,这个短语似乎是不正确的:

确保输入数据确实是 utf8 字符串。

UTF-8 是一种可变长度编码,而 Text::Unidecode 只接受每个字符的固定长度(两字节)编码。所以这句话应该是:

确保输入数据确实是一串两字节 Unicode 字符。

这也称为 UCS-2。

如果你想转换真正是 utf8 的字符串,你可以这样做:

my $decode_status = utf8::decode($input_to_be_converted);
my $converted_string = unidecode ($input_to_be_converted);
于 2014-09-30T15:28:32.093 回答