我正在努力使西里尔词在拉丁语中,这样我就可以把它们放在urls中。我使用icu4j音译,但它仍然给出了如下奇怪的字符:Vilʹndimaa。它应该更像viljandimaa。当我复制那个url时,这些字母变成%..。一些没用的东西。
有人知道如何用icu4j把西里尔变成a-z吗?
更新
我无法回答自己,但发现这个问题非常有用:将符号、重音字母转换为英文字母
发布于 2011-04-28 13:52:31
修改你的标识符来做你想做的事。您可以使用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进行测试。
发布于 2018-11-09 13:19:21
看看:https://ru.stackoverflow.com/questions/633355/Показать-правильный-пример-транслитерации-на-java
增加密度:
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>63.1</version>
</dependency>和音译者:
var CYRILLIC_TO_LATIN = "Latin-Russian/BGN"
// var CYRILLIC_TO_LATIN = "Russian-Latin/BGN"
Transliterator toLatinTrans = Transliterator.getInstance(CYRILLIC_TO_LATIN);
String result = toLatinTrans.transliterate(st);
System.out.println(result);发布于 2011-04-28 13:30:37
不知道icu4j,但在Unicode表中,Cyrillic采取的范围很小。我不想转接到工作不清楚的第三方库,而是为每个西里尔符号定义一个音译序列,然后自己翻译。
什么语言单词"viljandimaa“来自?听起来不像西里尔语。
https://stackoverflow.com/questions/5818912
复制相似问题