如何将在UTF8中编码的非ASCII字符转换为Perl中的ASCII等效字符?

Adr*_*ore 7 perl ascii utf-8 character-encoding

我有一个Perl脚本,第三方正在调用该脚本向我发送已注册我软件的人的姓名.其中一方以UTF-8编码名称,所以我相应地调整了我的脚本,用Encode :: decode_utf8(...)将UTF-8解码为ASCII.

这通常可以正常工作,但每6个月左右,其中一个名字包含西里尔字母,希腊字母或罗马字母,因此解码名称会产生垃圾字符,例如"ПоÐ'раÐанÑкаÑ".我必须跟进客户并要求他提供他的名字的"拉丁字符版本"才能发出注册码.

那么,是否有任何Perl模块可以检测是否存在这样的字符并在必要时自动将它们转换为最接近的ASCII表示?

似乎我可以使用Lingua :: Cyrillic :: Translit :: ICAO加Lingua :: DetectCharset来处理Cyrillic,但我更喜欢与其他字符集一起使用的东西.

mir*_*rod 12

我相信你可以使用Text :: Unidecode,它正是它试图做的.