字符串特殊字符

时间:2018-06-28 13:05:58

标签: java encoding

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

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

运行时的值为:

Entra�®neur

不明白

谢谢

1 个答案:

答案 0 :(得分:1)

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

如果您想要一个(较差的)类比,那有点像打印一些拉丁语,然后将其传递给只会说英语的人,并询问其含义。您也许可以解决其中的一些问题,但其中的一些内容将毫无意义。

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

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

...然后s4a应该包含正确的值。