大写重音字符显示为“?”

Uppercase accented characters displayed as “?”

我从数据库 table 中获得了一个字符串值,使用 latin1 作为排序规则。虽然,他的文本包含 UTF-8 字符。

所以我在我的 Web 服务器逻辑 (Java) 中这样做来解析奇怪的字符:

 new String(latin1.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

现在一切正常,但大写重音字符(例如:À)仍显示为“?”。只有大写的仍然有问题(例如:à 现在已解决并正确显示)。

是否也有解决大写重音字符的方法?

好吧,这可能不是最好的解决方案,但它确实对我有用并且满足了我们的需求。

问题似乎与 getBytes 方法与映射编码有关。我们简单地用 byte[] 映射我们的列,以避免在 WebServer/Hibernate 端进行任何转换。

这样我们就可以调用 new String(myByteArray, StandardCharsets.UTF-8) 现在输出很好了!