Duffblog
前进一步,看看,需要前进更大一步才可以。
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
5 随笔 :: 53 文章 :: 5 评论 :: 0 Trackbacks
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2006年9月 (2)
2006年5月 (2)
2006年3月 (1)
文章分类
J2EE
(rss)
Java(17)
(rss)
Tomcat
(rss)
山路漫步(8)
(rss)
开源技术(2)
(rss)
技术文摘(18)
(rss)
文章档案
2006年12月 (8)
2006年11月 (2)
2006年10月 (7)
2006年9月 (4)
2006年8月 (8)
2006年7月 (2)
2006年6月 (6)
2006年5月 (6)
2006年4月 (10)
网站
http://blog.lupaworld.com/blog
JavaWorld TW
(rss)
台湾不错的Java方面的论坛.
最新评论
1. re: 结合Spring2.0和ActiveMQ进行异步消息调用(转)[未登录]
有个问题不明白,就是是否不用启动监听容器?那么接收端不用启动就能获取到消息了?
--leven
2. re: JVM的内存管理机制 java.lang.OutOfMemoryError: PermGen space [未登录]
不对啊,我个还是不行啊,我用了myeclipse,使用了hibernate,struts
--liu
3. re: (转)voa的学习技巧和经验
well written!it's better to wrote in English.That is professional.
--蒋文明
4. re: 如何正确地应用Runtime类调用程序
评论内容较长,点击标题查看
--pc
5. re: Spring的一些参考。(http://www.blogjava.net/calvin/category/2823.html)
评论内容较长,点击标题查看
--pc
阅读排行榜
1. Spring的一些参考。(http://www.blogjava.net/calvin/category/2823.html)(343)
2. 百名专家推荐适合中国人10大减压方法(转)(264)
3. 感叹!!!(247)
4. 随便写写关于Object(218)
5. 晃悠~~晃悠~~(188)
评论排行榜
1. Spring的一些参考。(http://www.blogjava.net/calvin/category/2823.html)(1)
2. 晃悠~~晃悠~~(0)
3. 百名专家推荐适合中国人10大减压方法(转)(0)
4. 感叹!!!(0)
5. 随便写写关于Object(0)
“中文问题没商量”之Dom4j中的编码问题 (转)
本文主要讲述的是Dom4j在把Document保存到文件过程中出现的一个中文问题,本文跟
《80前》
一文一样,以Spring项目无关,请“
春迷
”们自重、没事勿扰,文中不足之处欢迎大家批评指教。
Dom4j是一个比较优秀的java开源xml解析项目,支持DOM, SAX and JAXP.,并提供对XPath查询语言的强大支持。因此,在 EasyJF团队的很多开源项目中,如EasyJWeb、EasyDBO等都是使用Dom4j来处理xml文件相关操作。
1、从一个xml文件中载入一个Dom到内存:
FileInputStream in = new FileInputStream(new File(fileName));
SAXReader reader = new SAXReader();
doc = reader.read(in);
2、把Dom中的数据写入到xml文件中
使用Dom4j,要把一个Dom中的数据写入到文件非常简单,API如下:
public void write(Writer writer) throws IOException;
因此,假如我们要把一个Document写入到c:\test.xml文件中,可以简单的使用下面的代码即可:
java.io.Writer wr= new java.io.FileWrite(filename);
doc.write(wr);
wr.close();//注意,必须要执行close()方法,才会实现真正的写入
这种用法也是Dom4j所推荐我们使用的非常简单的方法。然而,当我们的dom中包含有中文字符数据的时候,这种方法写入的xml文档却无法使直觉打开。会提示类似如下的错误:
org.dom4j.DocumentException: invalid byte 1 of 1-byte UTF-8 sequence (0xb2) Nested exception: invalid byte 1 of 1-byte UTF-8 sequence (0xb2)
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at
我们可以看生成的xml文件编码,内容是utf-8的,但文件格式确是ANSI的,如下图所示:
原因分析:
由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此造成了包括中文字符的XML文件无法正常阅读。
解决方法:
不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的Writer,在JDK的io包中, OutputStreamWriter可以指定输出编码。
正确的代码如下:
java.io.OutputStream out=new java.io.FileOutputStream(fileName);
java.io.Writer wr=new java.io.OutputStreamWriter(out,"UTF-8");
doc.write(wr);
wr.close();
out.close();
简化一下可以写成下面的样式:
java.io.Writer wr=new java.io.OutputStreamWriter(new java.io.FileOutputStream(fileName),"UTF-8");
doc.write(wr);
wr.close();
小结:
由于大多数优秀的基础性开源项目都是老外开发,他们不大可能在中文平台下进行测试,用例数据也很少会使用中文平台,因此,我们即使按照这些开源项目的通用说明文档及用户指南去操作,也会出现很多不可预知的错误。这也是为什么本人要参与组建开源团队EasyJF,提倡搞国产开源,并开发一些基础性的开源框架如EasyJWeb、EasyDBO的一个初衷。
当然,这里提出的中文问题,算是一个还“没来得及商量”以及要通过一些罕见的处理才能正确运行的中文问题。因此,同样归并到了“中文问题没商量”系列中。
http://blog.lupaworld.com/blog/htm/do_showone/tid_2261.html
posted on 2006-11-07 22:39
追球者
阅读(192)
评论(0)
编辑
收藏
所属分类:
技术文摘
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
相关文章:
“中文问题没商量”之Dom4j中的编码问题 (转)
管理 Eclipse 环境(Eclipse 维护的神秘艺术)
Oracle数据库字符集问题解析
ORACLE汉字显示的字符集问题(转)
Windows中查看端口占用的简单用法。
JVM的内存管理机制 java.lang.OutOfMemoryError: PermGen space
IT从业人员必看的10个论坛(转)
在 Java 应用程序中计划重复执行的任务(转)
Java虚拟机的 10 年(转)
编译原理学习导论(转)
Powered by:
BlogJava
Copyright © 追球者