【问题标题】:Comparing German word with umlauts with same word with unicode将德语单词与变音符号与相同单词与 unicode 进行比较
【发布时间】:2017-09-05 08:32:39
【问题描述】:

我正在将字符串从英语翻译成德语,但是已经翻译的德语单词正在重新翻译。

假设我已经翻译了“Beim Hinzuf\u00E4gen”这个词。我想将此与同一个词进行比较,但带有变音符号“Beim Hinzufügen”。这两个文件都被读取为 ISO-8859-1,但是当我比较它们被视为不同的单词时,该单词被再次翻译,这是我不想要的。即使我用 unicode 替换 Umlaut 并比较两者,它们仍然被视为不同。我确定这是因为当我通过“\u00E4”重放变音符号时,会添加一个额外的反斜杠。

任何人都知道我正在尝试做的首选方法。

【问题讨论】:

  • 尚不清楚您在此处包含的 Unicode 转义是否在文件中,或者文件的读取方式。请提供minimal reproducible example,以便我们为您提供帮助。
  • 将添加代码,干杯!
  • 你不应该将Beim Hinzuf\u00E4genBeim Hinzufägen 进行比较吗?注意第二个字符串中的ä
  • 抱歉,回复晚了。尤金你绝对正确。我不仅映射了错误的 unicode,而且似乎我正在用 UTF-8 编写文件,这似乎得到了您指出的错误 Unicode。现在已经解决了我的问题,谢谢!

标签: java language-translation


【解决方案1】:

正如@Eugene 指出的那样,您的结果是正确的。您将“Hinzufügen”与“Hinzufägen”进行比较,它们是不同的。

Unicode 00E4 是“ä”,
Unicode 00FC 是“ü”。

【讨论】:

  • 谢谢,我什至没有意识到我把变音符号映射错了。
【解决方案2】:

看来您需要将这些与Collator 进行比较:

String left = "Beim Hinzuf\u00E4gen";
String right = "Beim Hinzufägen";
Collator c = Collator.getInstance();
c.setStrength(Collator.PRIMARY);

int result = c.compare(left, right); // 0

【讨论】:

  • 原来我把 unicode 映射错了。我以前从未听说过 Collat​​or,所以我会继续阅读它。谢谢。
猜你喜欢
  • 2011-12-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
相关资源
最近更新 更多