【发布时间】:2021-02-06 10:43:42
【问题描述】:
我想保存一个 java 生成的 txt 文件。我是这样做的:
StringBuilder builder = new StringBuilder();
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++) {
builder.append(Satz[i][j]+"");
if(j < col - 1)
builder.append(";");
}
builder.append("\n");
}
System.out.println("builder");
System.out.println(builder);
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(path));
//writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
writer.write(builder.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我尝试了被注释掉的版本 (OutputStreamWriter),但也没有用。
所以问题是,在保存 txt 文件之前,代码 System.out.println(builder); 给了我字符串 is 的样子。这里看起来像这样:
von 24,5 mio€ (vorjahr: bereinigt 11,4 mio€)
在 txt 文件中,如下所示:
24,5 mio€ (vorjahr: bereinigt 11,4 mio€)
我做错了什么?有人可以帮我解决这个问题吗?
谢谢!
【问题讨论】:
-
在字节级别上,文件 in 的实际内容是什么,而不是它看起来 的样子?后者受任何显示内容的控制 - 特别是,它是否知道内容是 UTF-8 编码的?
-
可能有许多不同的配置错误导致您描述的问题。因此,有几个问题有助于分析:查看文本文件时您使用的工具(记事本/编辑器/其他)是什么?您的 Java 平台默认编码是什么 (
System.getProperty("file.encoding"))?是"€".length()==1?
标签: java character-encoding text-files symbols