最近在更新我用JavaFX开发的地图编辑器,包含中文保存后打开读取XML会报错,错误大概是:Invalid byte 1 of 1-byte UTF-8 sequence。主要原因是保存的XML文件并非UTF-8编码,当然你可以手动用记事本打开然后另存为UTF-8编码的文件,不过每次手动会很麻烦。
后来才发现一个解决方法。
之前保存XML使用的是new XMLWriter(new FileWriter()),而FileWriter自身并未做编码处理,我们只需要使用FileOutputStrem即可。
代码如下:
Document map = createSaveDocument();
XMLWriter writer;
try {
writer = new XMLWriter(new FileOutputStream(file));
writer.write(map);
writer.close();
AlertDialog.showAlertDialog("保存地图完成!");
} catch (IOException e1) {
e1.printStackTrace();
AlertDialog.showAlertDialog("保存地图出错:" + e1.getMessage());
}
这样保存和读取XML文件都很正常。
文章评论