用java编写UTF-8文件

时间:2015-03-17 20:47:45

标签: java utf-8

我正在尝试编写一个java实用程序,该实用程序只写出我明确写入该文件的字符的UTF-8文件。我编写了以下代码来完成这个技巧。

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;


public class FileGenerator {

    public static void main(String[] args) {
        try {

            char content = 0xb5;

            String filename = "SPTestOutputFile.txt";

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                        new FileOutputStream(filename), "UTF-8"));

            bw.write(content);
            bw.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

我还将-Dfile.encoding = UTF-8作为VM参数传递。

我正在尝试编写的字符确实被写入文件,但我之前也得到了一个Â所以当我尝试写出μ时,我实际上得到了μ。有谁知道如何纠正这一点,以便我总是得到μ?

由于

2 个答案:

答案 0 :(得分:3)

实现工作正常:µ的UTF-8表示为c2 b5。这正是写入文件的内容。

检查UTF-8表here

File in Hex editor

答案 1 :(得分:1)

您的txt文件包含两个“符号”:

  1. BOM(Byte order mark
  2. μ
  3. 如果您的应用程序(某些阅读器)正确识别编码,则只能看到µ。 在其他情况下,应用程序将BOM解释为另一个符号,您可以看到µ或其他内容。

    所以你的文本文件没问题。