首页 > 解决方案 > 字符串特殊字符

问题描述

我正在尝试正确评估此字符串:

String s4 = "Entraîneur";
String s4a = new String(s4.getBytes("iso-8859-1"));

运行时的值为:

Entra�®neur

不能理解

谢谢

标签: javaencoding

解决方案


您正在使用一种编码创建一个字符串(默认的,很可能是 UTF-8,除非您另有指定),然后用另一种不兼容的编码 (ISO 8859-1) 将其读回。这几乎总是会对任何非 ansii 字符产生问题,因为不同的编码用不同的字节序列表示这些字符。

如果你想要一个(糟糕的)类比,这有点像打印出一些拉丁语,然后将其传递给只会说英语的人并询问它的含义。你也许可以解决其中的一些问题,但其中的其他部分将成为无稽之谈。

如果您更改代码以使用默认字符集:

String s4 = "Entraîneur";
String s4a = new String(s4.getBytes(Charset.defaultCharset()));

...那么s4a应该包含正确的值。


推荐阅读