Dom4j读写文件时的编码问题

1、Dom4j写文件时的编码问题

如上图代码所示,如果使用 writer = new XMLWriter(new FileWriter(new File(filepath)), xmlFormat); 下载的xml文件编码格式如下:

原因分析:

  由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此会造成包括中文字符的XML文件无法正常阅读。

解决方法:

  不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的Writer,在JDK的io包中, OutputStreamWriter可以指定输出编码。

  正确的代码如下:

OutputStream out=FileOutputStream(fileName);

Writer wr = OutputStreamWriter(out, "UTF-8");

writer = new XMLWriter(wr);

writer.write(document);

writer.flush();

writer.close();

2、Dom4j读文件时编码问题(常见问题:Invalid byte 1 of 1-byte UTF-8 sequence)

原因分析:

中文环境下,我们将xml保存为utf-8格式但实际上文件是以GBK格式来保存的。

解决方法:

1、手动将文件另存为。。。 时,修改文件编码为UTF-8.

2、Dom4J读取文件时,用IO读,在IO流中修改字符编码

Dom4j读写文件时的编码问题

时间: 2024-10-04 16:41:56

Dom4j读写文件时的编码问题的相关文章

读写文件时遇到编码问题解决方法

读取文件时有时候会遇到编码问题,导致读取的内容为乱码,此时我们可以用iconv来进行转码. 使用file_get_contents()来读取文件内容,但是有时候文件过大的话,就会导致内存溢出,读取失败, 此时使用逐行读取的方法: $file = '1.txt';$handle = fopen($file, 'r');while (!feof($handle)) { $line = fgets($handle); $encoding = mb_detect_encoding($line, arra

运转hdf读写文件时呈现的过错

应该是root用户发动namenod时,root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.更改了hado

[转]]c# 读写文件时文件正由另一进程使用

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题. 文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件. log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作. 今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流. 1. FileStream fs = File.OpenRead(url);StreamReader sr = new StreamReader((System.IO.Stream

python 处理中文文件时的编码问题,尤其是utf-8和gbk

python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码文件的第一行或第二行添加编码指示: # coding=utf-8 ##以utf-8编码储存中文字符 print '中文'像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果用unicode编码,有以下2种方式: s1 = u'中文' #u表示用unicode编码方式储存信息 s2 = uni

巧用FileShare解决C#读写文件时文件正由另一进程使用的bug

在使用C#进行文件读写的时候,一旦对文件操作频繁,总会碰到一些令人措手不及的意外.例如经常会碰到的一个问题: System.IO.IOException: 文件“XXX”正由另一进程使用,因此该进程无法访问此文件.这个问题是碰到最频繁的一个.其实可 以通过FileShare来完美解决这个问题,下面提供一个例子: /*filePath为传过来的文件路径,endcode为设置的文件编码方式*/ using (FileStream fs = new FileStream(filePath, FileM

Python3 读写文件碰到的编码问题

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

读写文件时0A转化为0D 0A

转自:http://www.cnblogs.com/congdiaodiao/p/4529785.html 用C++写东西,需要往文件里写数据,很简单的代码,大概是这个样子: #include <fstream>using namespace std; int _tmain(int argc, _TCHAR* argv[]){ ofstream fout; fout.open("d:\\test.dat");  int a = 0x7788; fout.write((cha

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

log20170317.txt是一个自动任务生成log4net的日志文件,自动任务一直在执行. 今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流. 1. FileStream fs = File.OpenRead(url); StreamReader sr = new StreamReader((System.IO.Stream)fs, System.Text.Encoding.Default); 错误提示:文件“D:\Log\log20170317.txt”正由另一进程使用,因此该

安卓读写文件和路劲注意事项

写文件: private void writeToLocal(String filesString,String content,int mode) { try { FileOutputStream fisStream=openFileOutput(filesString,mode); fisStream.write(content.getBytes()); fisStream.flush(); fisStream.close(); } catch (Exception e) { // TODO