java - 使用 icu4j 将德语变音符号音译到他们的 DIN 5007-2 替代品中

标签 java coldfusion diacritics icu icu4j

我希望能够音译德语元音变音字符

Ü ü ö ä Ä Ö

进入他们的DIN 5007-2备选方案

ä → ae
ö → oe
ü → ue
Ä → Ae
Ö → Oe
Ü → Ue
ß → ss (or SZ)

就像在这种情况下:

https://german.stackexchange.com/questions/4992/conversion-table-for-diacritics-e-g-%C3%BC-%E2%86%92-ue

我发现最相关的用例是: https://github.com/elastic/elasticsearch-analysis-icu/blob/master/src/test/java/org/elasticsearch/index/analysis/SimpleIcuCollationTokenFilterTests.java

他们在第 208 行的位置

String DIN5007_2_tailorings =
            "& ae , a\u0308 & AE , A\u0308"+
            "& oe , o\u0308 & OE , O\u0308"+
            "& ue , u\u0308 & UE , u\u0308";

我想避免创建复杂的 Java 代码,例如定义自定义裁剪和所有必需的代码。我希望代码尽可能简单,因为我必须在 ColdFusion 应用程序中使用此代码。

我尝试了一下

var instance = Transliterator.getInstance("Latin-ASCII");

var instance = Transliterator.getInstance("any-NFD; [:nonspacing mark:] any-remove; any-NFC");

及其变体,它们都会导致:

 writeDump(instance.transliterate('Häuser Bäume Höfe Gärten daß Ü ü ö ä Ä Ö ß '));

 Hauser Baume Hofe Garten dass U u o a A O ss 

如果可能的话,我想坚持使用 .getInstance() 方法。 这里的问题是 .getInstance() 方法的 ID 字符串是什么,它会导致将变音符号音译成它们的 DIN 5007-2 等价物?

最佳答案

对此进行更新,因为现在有一个使用“de-ASCII”的简单解决方案:

Transliterator transliterator = Transliterator.getInstance("de-ASCII");
String umlautReplaced = transliterator.transliterate(txt);

关于java - 使用 icu4j 将德语变音符号音译到他们的 DIN 5007-2 替代品中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676315/

相关文章:

iPhone 核心数据 : Sort with umlauts

javascript - 匹配任何非单词字符(不包括变音符号)

java - Raspberry Pi java wifi 检查器

用于运行应用程序的 Java 9 REPL

java - 如何在jsf中的bean中使用线程

用于解析 "Accept" header 的正则表达式

mysql - 在 mysql mediumtext 列中存储超过 64000 的问题

java - 如何将 JPanel 中的图像添加到 JPanel?

list - 如何按部分名称查找和显示目录文件

xml - 使用 xpath 包含忽略重音符号