我正在尝试正确评估此字符串:
String s4 = "Entraîneur";
String s4a = new String(s4.getBytes("iso-8859-1"));
运行时的值为:
Entra�®neur
不明白
谢谢
答案 0 :(得分:1)
您正在使用一种编码(默认编码,除非另有说明,否则很可能是UTF-8)创建一个字符串,然后使用其他不兼容的编码(ISO 8859-1)将其读回。几乎总是会出现任何非ansii字符的问题,因为不同的编码用不同的字节序列表示这些字符。
如果您想要一个(较差的)类比,那有点像打印一些拉丁语,然后将其传递给只会说英语的人,并询问其含义。您也许可以解决其中的一些问题,但其中的一些内容将毫无意义。
如果您更改代码以使用默认字符集:
String s4 = "Entraîneur";
String s4a = new String(s4.getBytes(Charset.defaultCharset()));
...然后s4a
应该包含正确的值。