icu4j西里尔语到拉丁语

我正试图让西里尔语成为拉丁文,所以我可以把它们放在url中。 我使用icu4j音译器,但它仍然给出了这样奇怪的字符: Vil’ândimaa 。 它应该更像viljandimaa 。 当我复制那个url时,这些字母会变成%..某些东西没用。

有谁知道怎么用icu4j把西里尔语变成az?

UPDATE

不能回答自己,但发现这个问题非常有用: 将符号,口音字母转换为英文字母

修改您的标识符以执行您想要的操作。 您可以使用Remove变换使用正则表达式Remove不需要的字符。

例如,考虑字符串“’Eéматематика”

 "'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430" 

标识符"Any-Latin; NFD; [^\\p{Alnum}] Remove"将音译为拉丁语(可能仍包含重音符号),将重音字符分解为字母和变音符号并删除任何非字母数字的字符。 结果字符串是“Eematematika”

您可以在ICU网站上阅读有关General Transforms下标识符的更多信息。


例:

 //import com.ibm.icu.text.Transliterator; String greek = "'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"; String id = "Any-Latin; NFD; [^\\p{Alnum}] Remove"; String latin = Transliterator.getInstance(id) .transform(greek); System.out.println(latin); 

针对ICU4J 49.1进行测试。

不知道icu4j,但在Unicode表中,Cyrillic只占用很小的范围。 我没有转换到工作不清楚的第三方库,而是为每个西里尔符号定义音译序列并自己进行翻译。

PS什么语言单词“viljandimaa”来自哪里? 对我来说听起来不像西里尔字母……

Interesting Posts