﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-benbenbaby</title><link>http://www.blogjava.net/shakebaby/</link><description>不知就搜 不会就学</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:05:43 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:05:43 GMT</pubDate><ttl>60</ttl><item><title>“中文问题没商量”之Dom4j中的编码问题(转载)</title><link>http://www.blogjava.net/shakebaby/archive/2007/02/08/98781.html</link><dc:creator>shakebaby</dc:creator><author>shakebaby</author><pubDate>Thu, 08 Feb 2007 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/shakebaby/archive/2007/02/08/98781.html</guid><wfw:comment>http://www.blogjava.net/shakebaby/comments/98781.html</wfw:comment><comments>http://www.blogjava.net/shakebaby/archive/2007/02/08/98781.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/shakebaby/comments/commentRss/98781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shakebaby/services/trackbacks/98781.html</trackback:ping><description><![CDATA[本文主要讲述的是Dom4j在把Document保存到文件过程中出现的一个中文问题,文中不足之处欢迎大家批评指教。<br />　　Dom4j是一个比较优秀的java开源xml解析项目，支持DOM, SAX and JAXP.，并提供对XPath查询语言的强大支持。因此，在EasyJF团队的很多开源项目中，如EasyJWeb、EasyDBO等都是使用Dom4j来处理xml文件相关操作。<br /> <br />1、从一个xml文件中载入一个Dom到内存：<br />　　FileInputStream in = new FileInputStream(new File(fileName));<br />　　SAXReader reader = new SAXReader();<br />　　doc = reader.read(in);<br />2、把Dom中的数据写入到xml文件中<br />　　使用Dom4j，要把一个Dom中的数据写入到文件非常简单，API如下：<br />　　 public void write(Writer writer) throws IOException；<br />　　因此，假如我们要把一个Document写入到c:\test.xml文件中，可以简单的使用下面的代码即可：<br />        java.io.Writer wr= new java.io.FileWrite(filename);<br />　　doc.write(wr);<br />        wr.close();//注意，必须要执行close()方法，才会实现真正的写入<br />　　<br />　　这种用法也是Dom4j所推荐我们使用的非常简单的方法。然而，当我们的dom中包含有中文字符数据的时候，这种方法写入的xml文档却无法使直觉打开。会提示类似如下的错误：<br />　　 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)<br /> at org.dom4j.io.SAXReader.read(SAXReader.java:484)<br /> at org.dom4j.io.SAXReader.read(SAXReader.java:343)<br /> at <br />　　我们可以看生成的xml文件编码，内容是utf-8的，但文件格式确是ANSI的，如下图所示：<br /><br /> <img height="409" alt="" src="http://www.128kj.com/UserFiles/Image/11559975301791157793070.jpg" width="567" twffan="done" /><br />原因分析：<br />　　由于FileWriter默认的输出编码是ANSI编码，而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的，因此造成了包括中文字符的XML文件无法正常阅读。<br /> <br />解决方法：<br /> 　　不能使用简单的FileWriter，而应该是使用一个能指定具体输出编码的Writer，在JDK的io包中， OutputStreamWriter可以指定输出编码。<br />　　正确的代码如下：<br />    java.io.OutputStream out=new java.io.FileOutputStream(fileName);<br />   java.io.Writer wr=new java.io.OutputStreamWriter(out,"UTF-8");   <br />   doc.write(wr);   <br />   wr.close();<br />   out.close();<br /><br />　　简化一下可以写成下面的样式：<br /><br />   java.io.Writer wr=new java.io.OutputStreamWriter(new java.io.FileOutputStream(fileName),"UTF-8");   <br />   doc.write(wr);   <br />   wr.close();<br /><br />小结：<br />　　由于大多数优秀的基础性开源项目都是老外开发，他们不大可能在中文平台下进行测试，用例数据也很少会使用中文平台，因此，我们即使按照这些开源项目的通用说明文档及用户指南去操作，也会出现很多不可预知的错误。这也是为什么本人要参与组建开源团队EasyJF，提倡搞国产开源，并开发一些基础性的开源框架如EasyJWeb、EasyDBO的一个初衷。<br />　　当然，这里提出的中文问题，算是一个还“没来得及商量”以及要通过一些罕见的处理才能正确运行的中文问题。因此，同样归并到了“中文问题没商量”系列中。<br /><br />(注：本文作者,<a class="l2" href="http://www.easyjf.com/" target="_blank"><font color="#002c99">EasyJF开源团队</font></a>　<a class="l2" href="http://blog.csdn.net/easyjf" target="_blank"><font color="#002c99">大峡</font></a>，转载请保留作者声明！) <img src ="http://www.blogjava.net/shakebaby/aggbug/98781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shakebaby/" target="_blank">shakebaby</a> 2007-02-08 15:03 <a href="http://www.blogjava.net/shakebaby/archive/2007/02/08/98781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Service Component Architecture</title><link>http://www.blogjava.net/shakebaby/archive/2007/01/27/96297.html</link><dc:creator>shakebaby</dc:creator><author>shakebaby</author><pubDate>Sat, 27 Jan 2007 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/shakebaby/archive/2007/01/27/96297.html</guid><wfw:comment>http://www.blogjava.net/shakebaby/comments/96297.html</wfw:comment><comments>http://www.blogjava.net/shakebaby/archive/2007/01/27/96297.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/shakebaby/comments/commentRss/96297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shakebaby/services/trackbacks/96297.html</trackback:ping><description><![CDATA[
		<p>Service Component Architecture(SCA) 是一组标准，描述了一个通过SOA构建应用系统的模型。SCA扩展并补充了之前服务实现的方法，构建在一些开放的标准之上，比如Web Services。</p>
		<p>SCA提倡基于SOA的业务应用能够用组件（component）的形式来实现业务逻辑，这些组件通过面向服务的接口提供功能(服务)，或者使用别的组件通过面向服务的接口提供的功能，即服务引用(Service references)。SCA将构建一个SOA的应用切分为两个主要步骤：<br /> 1.服务组件的实现：提供或者使用（consume）服务；<br /> 2.服务组件的组装：用来构建完整的业务应用，通过连接服务引用与服务(Through the wiring     of service reference to services)。<br />Figure 1. Service Component Architecture<br /></p>
		<p align="center">
				<img alt="Service Component Architecture" src="http://www-128.ibm.com/developerworks/library/specification/ws-sca/figure1.gif" align="center" />
		</p>
		<p>SCA服务的实现支持使用多种的编程语言，既包括传统的面向对象或过程的语言，如：Java,PHP,C++,COBOL,以XML为核心的BPEL，XSLT等，又包括一些声明语言（declarative language）如：SQL和XQuery。SCA同样支持异步的和面向消息的调用以及同步的调用返回模式。</p>
		<p>SCA支持绑定(Bindings)一组访问机制用来调用服务，包括Web Services,Messaging Systems 和 CORBA IIOP，Bindings 是声明式的(are handled declarativly)独立于实现代码，SCA通过使用策略定义了基础功能的使用，目的是为了更方便的应用到业务系统。</p>
		<p>SCA提倡使用Service Data Object(SDO)来表示服务中使用或返回的业务数据，提供对业务数据统一的访问来满足对SCA自己提供的业务服务的统一访问。</p>
		<p>SCA规范由许多文档共同描述，每一文档描述SCA中的一个方面。装配模型(Assembly Model)描述了组件间的配线连接。装配模型独立于实现语言。客户端和实现 描述了服务的实现和服务客户端—— 每一种实现语言有其自己的客户端和针对该语言的SCA模型实现规范。</p>
		<p>
				<a href="http://www-128.ibm.com/developerworks/library/specification/ws-sca/">原文</a>
		</p>
<img src ="http://www.blogjava.net/shakebaby/aggbug/96297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shakebaby/" target="_blank">shakebaby</a> 2007-01-27 18:35 <a href="http://www.blogjava.net/shakebaby/archive/2007/01/27/96297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>