首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >icu4j西里尔字母改为拉丁文

icu4j西里尔字母改为拉丁文
EN

Stack Overflow用户
提问于 2011-04-28 12:53:59
回答 3查看 11.7K关注 0票数 15

我正在努力使西里尔词在拉丁语中,这样我就可以把它们放在urls中。我使用icu4j音译,但它仍然给出了如下奇怪的字符:Vilʹndimaa。它应该更像viljandimaa。当我复制那个url时,这些字母变成%..。一些没用的东西。

有人知道如何用icu4j把西里尔变成a-z吗?

更新

我无法回答自己,但发现这个问题非常有用:将符号、重音字母转换为英文字母

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-28 13:52:31

修改你的标识符来做你想做的事。您可以使用Remove转换使用正则表达式删除不需要的字符。

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

代码语言:javascript
复制
"'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"

识别符"Any-Latin; NFD; [^\\p{Alnum}] Remove"将音译为拉丁文(可能仍然包括重音),将重音字符分解为字母和数字,并删除任何非字母数字。得到的字符串是"Eematematika“。

您可以在ICU网站上阅读关于一般变换下的标识符的更多信息。

示例:

代码语言:javascript
复制
//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进行测试。

票数 16
EN

Stack Overflow用户

发布于 2018-11-09 13:19:21

看看:https://ru.stackoverflow.com/questions/633355/Показать-правильный-пример-транслитерации-на-java

增加密度:

代码语言:javascript
复制
<dependency>
    <groupId>com.ibm.icu</groupId>
    <artifactId>icu4j</artifactId>
    <version>63.1</version>
</dependency>

和音译者:

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2011-04-28 13:30:37

不知道icu4j,但在Unicode表中,Cyrillic采取的范围很小。我不想转接到工作不清楚的第三方库,而是为每个西里尔符号定义一个音译序列,然后自己翻译。

什么语言单词"viljandimaa“来自?听起来不像西里尔语。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5818912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档