我正试图让西里尔语成为拉丁文,所以我可以把它们放在网址中。我用 ICU4J 音译器,但它仍然会给出这样奇怪的字符: Vil'ândimaa。它应该更像 维良。当我复制那个网址时,这些字母会变成%..某些东西没用。
有谁知道怎么用icu4j把西里尔语变成a-z?
UPDATE
不能自己回答,但发现这个问题非常有帮助: 将符号,重音符号转换为英文字母
我正试图让西里尔语成为拉丁文,所以我可以把它们放在网址中。我用 ICU4J 音译器,但它仍然会给出这样奇怪的字符: Vil'ândimaa。它应该更像 维良。当我复制那个网址时,这些字母会变成%..某些东西没用。
有谁知道怎么用icu4j把西里尔语变成a-z?
UPDATE
不能自己回答,但发现这个问题非常有帮助: 将符号,重音符号转换为英文字母
修改你的 识别码 做你想做的事。您可以使用带有的正则表达式删除不需要的字符 Remove
转变。
例如,考虑字符串 “'Eéматематика”:
"'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"
标识符 "Any-Latin; NFD; [^\\p{Alnum}] Remove"
将音译为拉丁语(可能仍包括重音符号),将重音字符分解为字母和变音符号,并删除任何非字母数字的字符。结果字符串是 “Eematematika”。
您可以阅读有关标识符的更多信息 一般变革 在ICU网站上。
例:
//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进行测试。
修改你的 识别码 做你想做的事。您可以使用带有的正则表达式删除不需要的字符 Remove
转变。
例如,考虑字符串 “'Eéматематика”:
"'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"
标识符 "Any-Latin; NFD; [^\\p{Alnum}] Remove"
将音译为拉丁语(可能仍包括重音符号),将重音字符分解为字母和变音符号,并删除任何非字母数字的字符。结果字符串是 “Eematematika”。
您可以阅读有关标识符的更多信息 一般变革 在ICU网站上。
例:
//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,但是 在Cyrillic的Unicode表中 只是一小部分。我没有转换到工作不清楚的第三方库,而是为每个西里尔符号定义音译序列并自己进行翻译。
附:什么语言“viljandimaa”来自哪里?对我来说听起来不像西里尔字母......