为什么在调用.getBytes()时字符串“¿”会被翻译为“¿”

时间:2008-10-06 20:34:39

标签: java utf-8 character-encoding

使用

写出字符串“¿”时
System.out.println(new String("¿".getBytes("UTF-8")));

¿而不仅仅是¿。

为什么?我们如何解决它?

4 个答案:

答案 0 :(得分:5)

您不必使用UTF-16来解决此问题:

new String("¿".getBytes("UTF-8"), "UTF-8");

工作得很好。只要给getBytes()方法的编码与传递给String构造函数的编码相同,你应该没问题!

答案 1 :(得分:2)

您需要在String构造函数中指定Charset(请参阅API docs)。

答案 2 :(得分:1)

尝试:

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

在将字符串转换为字节时以及将字节转换回字符串时,您需要指定编码。

答案 3 :(得分:0)

听起来系统控制台不是UTF-8