Java Latin1编码的文本文件

时间:2015-03-26 13:20:56

标签: java utf-8 latin1

我正在尝试从java方法创建一个ISO-8859-15编码的文本文件:

public void createLatin1EncodedTextFile(File latin1File, Integer numberOfLines) throws UnsupportedEncodingException,
  FileNotFoundException {

  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(latin1File), "8859_1"));
  try {
    for (int i = 0; i < numberOfLines; i++) {
      bw.write(new String(generateRandomString().getBytes(), "ISO-8859-15"));
    }
  }
  catch (IOException e) {
    e.printStackTrace();
  }
  finally {
    try {
      if (!bw.equals(null)) {
        bw.close();
      }
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

方法generateRandomString()生成随机字符序列。 该方法工作正常,但当我用notepad ++打开它时,它表示文件是用UTF-8编码的。

1 个答案:

答案 0 :(得分:2)

你做的工作远远超过你的需要。文件的编码是您传递给OutputStreamWriter的任何编码:

try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(latin1File), "ISO-8859-15"))) {
    for (int i = 0; i < numberOfLines; i++) {
        bw.write(generateRandomString());
    }
}

Writer的全部意义在于它接受字符(或字符串)并负责编码它们的任务。

您的参数名为latin1File的事实让我想知道您是否真的想要创建ISO-8859-15文件。