有没有一种方法将Unicode转换为最接近的ASCII等效字符?

8

我将以土耳其语为例,例如“şğüı”变成“sgui”

我相信每种语言都有自己的转换方法,有时一个字符可能会被转换为多个ASCII字符,比如“alpha”/“phi”等。

我想知道是否有一种库/方法可以实现这种转换。


5
你是否指的是这里的第一个回答:https://dev59.com/oHM_5IYBdhLWcg3w1G6N ? - Martín Muñoz del Río
@MartínMuñozdelRío 是的,没错,谢谢。 - Kaan Soral
1个回答

7
你所要求的是“音译”。尝试使用Unidecode库。

2
有没有Unidecode的非GPL替代品? - Rjak
1
@Rjak:关于 Martín Muñoz del Río 在上面链接的这个答案,你怎么看?它使用了 Python 标准库中的 unicodedata - rodrigo
2
你好@rodrigo - unicodedata的问题在于它进行替换而不是音译。对于我们的应用程序,最好能找到最接近的“等效”ASCII字符(即音译)。例如,对于拉丁名字“Piekło”,Unidecode会返回“Pieklo”,这正是我们想要的。根据您传递的行为参数,unicodedata会返回“Pieko”(删除)或“Piek?o”(替换)。 - Rjak
1
@Rjak:问题在于Unicode没有将ł定义为组合字符,因此分解规范化技巧无法奏效...如果您只想转换有限的字符集(例如仅用于波兰人的姓名),则可以自己构建表格。除此之外,我不知道还有其他的方法,抱歉。 - rodrigo
1
不用道歉,@rodrigo。我理解音译的复杂性,这就是为什么我在寻找一个库。我们的律师不允许我们在代码库的某些部分使用GPL,因此找到一个非GPL的库将是很棒的。 - Rjak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接