输出UTF-8格式的数据

时间:2012-09-03 21:38:14

标签: utf-8

我无法以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。

我试图理解为什么这有效并说服自己我的解决方案是正确的。它归结为系统Locale的吗? Linux默认为en_US.utf-8。虽然我在Windows中指定的只是“en_US”。因此,当输出流试图从字符串中获取数据时,字符串是根据区域设置发送数据的吗?

1 个答案:

答案 0 :(得分:0)

或者您使用的是FileOutputStream,并且在那里编写二进制文件的字符编码或DataOutputStream非常重要。您也应该进行研究,但请查看here