【问题标题】:Output data in UTF-8 format以 UTF-8 格式输出数据
【发布时间】:2012-09-03 21:38:13
【问题描述】:

我无法以 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”。那么当输出流试图从字符串中获取数据时,字符串是根据语言环境发送数据的?

【问题讨论】:

    标签: utf-8


    【解决方案1】:

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

    【讨论】:

    • 谢谢。这是我缺少的 OutputStreamWriter。我一直坚持使用 PrintWriter 并在那里指定字符集,但这不起作用。
    猜你喜欢
    • 2011-12-05
    • 2013-10-06
    • 1970-01-01
    • 2011-04-17
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多