变音字符:如何在 Java 中将“à<0x9c>”转换为“Ü”?

问题描述 投票:0回答:1

我有一个包含“à<0x9c>”的字符串。这不完全是那些角色,我能描述它的最好方式是:

  • 在 Postgres DB / Datagrip Viewer 中看起来像“à”。
  • 从 Datagrip 复制到 Sublime Text 中时看起来像“à<0x9c>”。

我有另一个程序可以进行字符串匹配,并且它需要这个“Ü”。 所以我假设“à<0x9c>”在某种形式上相当于“Ü”。

我的问题是如何在 Java 中将这些通用字符集的“à<0x9c>”转换为“Ü”?我不想只为这个角色解决这个问题。

因此,如果“à<0x9c>”是编码1,“Ü”是编码2。如何从编码 1 转换为编码 2。

另外,encoding1 和encoding2 应该叫什么? 我的谷歌搜索显示encoding2被称为元音变音字符,但我不知道encoding1被称为什么。

java encoding character-encoding special-characters
1个回答
0
投票
byte[] b = new byte[] {(char)'Ã', (byte)0x9c};
String capitalUUmlaut = new String(b, StandardCharsets.UTF8);

您看到的是Unicode的多字节UTF-8编码。 ASCII,7 位,是一个子集。其他 Unicode 代码点都超过一个字节,每个字节的最高位为 1。

请注意,我使用字节数组。对于损坏的字符串,可能已经进行了一些字符集转换,这会错误地转换字节。即使在这里,

Ã
也可能无法在每个字符集中实现。

最好检查数据库中 DDL 所使用的编码(字符集)并指定它。

© www.soinside.com 2019 - 2024. All rights reserved.