dom4j保存XML中文编码问题:Invalid byte 1 of 1-byte UTF-8 sequence

最近在更新我用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文件都很正常。

发表评论

电子邮件地址不会被公开。