如何将看起来像英文的Unicode文本转换为ASCII?

时间:2012-01-15 22:43:36

标签: javascript ruby bash unix ascii

我有一个像“Previously”这样的文字,它看起来像英文,但里面有非ASCII字符:

enter image description here

将它转换为英文文本的最简单方法是什么(例如,“P”将是拉丁大写字母P?)

为简单起见,我们假设非英语字符是俄语。 但是,非常感谢更通用的解决方案!

优选语言:Javascript,Ruby,Bash脚本。

3 个答案:

答案 0 :(得分:3)

尽管一些西里尔字母(和希腊字母)字母与图形外观中的某些拉丁字母相同(即,任何包含两者的字体可能没有差异),但它们之间没有定义正式映射。因此,您需要自己定义映射。对于俄语来说,这样的字母数量相当有限,所以这是一个小的映射表。但是如果你想覆盖所有的Unicode,那么就会有大量的相似内容和几乎相似的内容,所以很难确定哪些字符足够相似。

答案 1 :(得分:1)

如果要转换的字符数很少(例如俄语字母),那么将输入字符映射到输出字符的简单字典就足够了。

只需循环遍历字符串,并查看每个字符是否在字典中,如果是,则将其替换为字典中存储的替换字符。

答案 2 :(得分:0)

我建议使用Unicode软件包,它将希腊和西里尔字母映射到最接近的ascii符号,并删除所有变音符号:

unidecode('Lillı Celiné Никита Ödipus');

'Lilli Celine Nikita Odipus'