为什么 Linux 和 Windows 中显示的内容不同?
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
在 Windows 中:
¿
在Linux中:
¿
System.out.println() 以系统默认编码输出文本,但控制台根据其自己的编码(或“代码页”)设置解释该输出。在 Windows 机器上,两种编码似乎匹配,但在 Linux 机器上,输出显然是 UTF-8,而控制台将其解码为单字节编码(如 ISO-8859-1)。或者,正如 Jon 建议的那样,源文件被保存为 UTF-8 并且javac
将其读作其他内容,这个问题可以通过使用 Unicode 转义来避免。
当您需要输出 ASCII 文本以外的任何内容时,最好的选择是使用适当的编码将其写入文件,然后使用文本编辑器读取该文件 - 控制台太有限且太依赖系统。顺便说一下,这段代码:
new String("¿".getBytes("UTF-8"), "UTF-8")
...对输出没有影响。所做的就是将字符串的内容编码为字节数组,然后再次解码,再现原始字符串——这是一个昂贵的无操作。如果要以特定编码输出文本,则需要使用 OutputStreamWriter,如下所示:
FileOutputStream fos = new FileOutputStream("out.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)