【发布时间】:2026-02-10 23:30:02
【问题描述】:
我有一个 Perl 脚本,第三方正在调用它来向我发送注册我的软件的人员的姓名。其中一方使用 UTF-8 对名称进行编码,因此我相应地调整了我的脚本,以使用 Encode::decode_utf8(...) 将 UTF-8 解码为 ASCII。
这通常可以正常工作,但每 6 个月左右,其中一个名称包含西里尔字母、希腊语或罗马尼亚语字符,因此对名称进行解码会产生垃圾字符,例如“ПодражанÑÐºÐ°Ñ ”。我必须跟进客户并要求他提供其姓名的“拉丁字符版本”,以便颁发注册码。
那么,是否有任何 Perl 模块可以检测是否存在此类字符并在必要时自动将它们转换为最接近的 ASCII 表示?
似乎我可以使用 Lingua::Cyrillic::Translit::ICAO 加上 Lingua::DetectCharset 来处理 Cyrillic,但我更喜欢与其他字符集一起使用的东西。
【问题讨论】:
标签: perl utf-8 character-encoding ascii