浏览 1815 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-14
错误原因:经过调试,发现是文件内容元编码与不同操作系统文件编码相互冲突导致的,对操作系统不太熟悉,估计是当时的开发环境的Window系统是GBK的,而部署环境的Linux操作系统是UTF-8的。 解决方式:大概来看,在传递到ACTION中正常的中文内容,在Windows下写入的流和文件的编码都设置为GBK、Linux下都设置为UTF-8可以避免乱码问题(保存的文件编码与操作系统的一致).另外,一个统一的解决方法是,文件写入流使用FileOutputStream而不使用FileWriter ... OutputFormat format = OutputFormat.createPrettyPrint(); FileOutputStream fos = new FileOutputStream(fileURL); XMLWriter writer = new XMLWriter(fos, format); ... //以下的方式在不同的操作系统下有差异,会出现乱码 //OutputFormat format = OutputFormat.createPrettyPrint(); //format.setEncoding("UTF-8"); //XMLWriter writer = new XMLWriter(new FileWriter(new File(fileURL)),format); ... 一些详细的测试见附件。 小结:这个属于文件源编码与操作系统文件编码的问题,如果内容编码与操作系统的编码不一致就会出现乱码。FileOutputStream类的接口估计是使用当前操作系统默认的文件编码,具有教好的可移植性 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |