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

问题描述 投票:2回答:3

我有一个像 "Previously "这样的文本,看起来像英文,但里面有一个非ASCII字符。

enter image description here

有什么最简单的方法可以将其转换成英文文本(例如,将 "P "转换成拉丁文大写字母P)?

为了简单起见,我们假设这些非英文字符是俄语。

首选的语言:Javascript、Ruby、Bash脚本。Javascript, Ruby, Bash脚本.

javascript ruby bash unix ascii
3个回答
3
投票

虽然一些西里尔字母(和希腊字母)与一些拉丁字母在图形外观上是相同的(即,在任何包含这两种字母的字体中可能没有区别),但它们之间没有定义正式的映射。因此,你需要自己定义映射。对于俄语来说,这种字母的数量相当有限,所以这将是一个小映射表的问题。但是,如果你希望涵盖所有的Unicode,那么就会有大量的相似和几乎相似的字符,所以困难的部分将是决定哪些字符足够相似。


1
投票

如果需要转换的字符数量较少(例如俄文字母表),那么一个简单的字典将输入字符映射到输出字符就足够了。

简单地在字符串中循环,并为每个字符查找是否在字典中,如果是,则用字典中存储的替换字符替换它。


0
投票

我建议使用 统一码 包,它将把希腊文和西里尔文字母映射到最接近的ascii符号上,并删除任何二元音符。

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

"Lilli Celine Nikita Odipus

© www.soinside.com 2019 - 2024. All rights reserved.