我正在尝试从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编码的。
答案 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文件。