UTF-8存储中文的问题~~乱码的问题

lixiaoxue85 2007-01-04 03:57:18
DOM4J写文件出现乱码,重新编码也不行,写了个测试的 代码如下
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class Test {
public static void main(String[] args)
{
try{
SAXReader reader = new SAXReader();
Document document = reader.read("c:/Demo.txt");
Element root = document.getRootElement();
String a="研发部";
Element newElement=root.addElement("Department")
.addAttribute("value",new String(a.getBytes(),"UTF-8"))
;
// OutputFormat format=new OutputFormat(" ",true,"GBK");
//使用 format能解决问题但是,XML规定为UTF-8
XMLWriter writer = new XMLWriter(
new FileOutputStream(new File("c:/Demo.txt")));
//new FileWriter("c:/Demo.txt"));
//使用FileWriter并不正确,DOM4J并未转码,写第二次时会报错
writer.write( document );
writer.close();
}catch(Exception e){System.out.println(e.getMessage());}

}
}
Demo.txt
<?xml version="1.0" encoding="UTF-8"?>
<Company>

</Company>
...全文
495 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaoxue85 2007-01-04
  • 打赏
  • 举报
回复
多谢 结帖  也谢谢 Mr.Crab 哈哈
syoumei 2007-01-04
  • 打赏
  • 举报
回复
上面的写法其实等于没写

我只想告诉你new String(a.getBytes(),"UTF-8")))导致了乱码

你首先得到汉字的unicode编码,然后将这编码当作utf-8,再次变回unicode。肯定是不行的

其实<?xml version="1.0" encoding="UTF-8"?>并非是xml本身的编码,

而是告诉让其他软件采用哪一种编码来解读

所以本地操作xml文件不需要太操心
lixiaoxue85 2007-01-04
  • 打赏
  • 举报
回复
多谢LS 请问
Element newElement=root.addElement("Department")
.addAttribute("value",new String(a.getBytes("UTF-8"),"UTF-8"))
;
为社么,解码是UTF-8?a.getBytes("UTF-8")
syoumei 2007-01-04
  • 打赏
  • 举报
回复

public static void main(String[] args)
{
try{
SAXReader reader = new SAXReader();
Document document = reader.read("c:/Demo.xml");
Element root = document.getRootElement();
String a="研发部";
System.out.println(root.getText()+"1");
Element newElement=root.addElement("Department")
.addAttribute("value",new String(a.getBytes("UTF-8"),"UTF-8"))
;
OutputFormat format=new OutputFormat(" ",true,"GBK");
//使用 format能解决问题但是,XML规定为UTF-8
XMLWriter writer = new XMLWriter(
new FileOutputStream(new File("c:/Demo.xml")));
//new FileWriter("c:/Demo.txt"));
//使用FileWriter并不正确,DOM4J并未转码,写第二次时会报错
writer.write( document );
writer.close();
}catch(Exception e){System.out.println(e.getMessage());}

}


lixiaoxue85 2007-01-04
  • 打赏
  • 举报
回复
大家看清问题...分不够在加~~~现在要求是UTF-8
xiaoyetao08 2007-01-04
  • 打赏
  • 举报
回复
GBK
傻根她弟 2007-01-04
  • 打赏
  • 举报
回复
改成gb2312试一下
GALFORDD 2007-01-04
  • 打赏
  • 举报
回复
不需要new String(a.getBytes("GBK"),"UTF-8") a就可以了 默认的输出就是utf-8
amozon 2007-01-04
  • 打赏
  • 举报
回复
up
syoumei 2007-01-04
  • 打赏
  • 举报
回复
你为啥要编码呢,不编多好啊 ,赞分可不容易啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧