我很难以 UTF-8 格式输出数据。我设置了一个测试用例,其中我从输入文件中读取的数据包含英镑符号(Hex C2A3)。当我在 Linux 上写出来时,我得到了有效的 UTF-8 (C2A3)。在 Windows 上,我只得到 HEX A3。
我尝试使用 PrintStream 并将字符集指定为“UTF-8”。没运气。在我最终尝试了 DataOutputStream 之前,我尝试了许多其他流,但都没有运气。我使用了将字节数组作为参数的“write()”方法。我需要输出一个字符串,所以我调用了“myString.getBytes("UTF-8")”。
我最终得到如下代码:
dataOutputStream.write(myString.getBytes("UTF-8"));
这在两个系统上都能正常工作;Windows 7 和 Linux。
我试图理解为什么这会起作用并说服自己我的解决方案是正确的。它归结为系统区域设置吗?Linux 默认为 en_US.utf-8。虽然我在 Windows 中只能指定“en_US”。那么当输出流试图从字符串中获取数据时,字符串是根据语言环境发送数据的吗?