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

StackOverflow https://stackoverflow.com/questions/176084

  •  05-07-2019
  •  | 
  •  

当写字符串“¿”时使用

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

¿写的不是¿。

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

有帮助吗?

解决方案

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

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

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

其他提示

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

尝试:

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top