我正在使用以下代码逐行处理大型文本文件。问题是我使用的语言不仅仅是英语,克罗地亚语。许多字符在输出文件中显示为 。我该如何解决这个问题?
该文件是ANSI格式,但这似乎不是与InputStreamReader兼容的编码类型。我应该将原始文件保存为什么编码类型?
try (BufferedWriter bw = new BufferedWriter(new FileWriter(FILENAME))) {
String line;
try {
try (
InputStream fis = new FileInputStream("C:\\Users\\marti\\Documents\\Software Projects\\Java Projects\\TwitterAutoBot\\src\\main\\resources\\EH.Txt"); InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-8")); BufferedReader br = new BufferedReader(isr);
) {
while ((line = br.readLine()) != null) {
// Deal with the line
String content = line.substring(line.lastIndexOf(" ") + 1);
System.out.println(content);
bw.write("\n\n" + content);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// bw.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
我通过使用Cp1252
而不是UTF-8
进行编码解决了这个问题,因为该文件是在ANSI
中编码的。
答案 1 :(得分:-1)
您需要使用InputStreamReader
的OutputStreamWriter
/ Charset
构造函数。您正在使用的构造函数正在使用您平台的默认字符集,这显然不是您所需要的。
如果您使用的是Java 8或更高版本,则可以使用Files
中的一种便捷方法:
您需要确保使用正确的字符集读取输入文件,以及在支持您尝试编写的字符的字符集中编写文件。 UTF-8是一种合适的输出文件格式。