来自perldoc:
Text :: Unidecode提供的是一个函数,unidecode(...) Unicode数据
Unicode data
在这句话中意味着什么?它是Perl字符串吗?即,如果在输入字符串上调用,则Encode :: is_utf8将为真,或者是unicode字节,即encode
的结果?
答案 0 :(得分: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"
答案 1 :(得分:0)
在Text :: Unicode的文档中,在"警告"下,似乎这个短语不正确:
确保输入数据确实是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);