Tuscany SDO中的中文问题

本文讨论了TuscanySDO在处理中文时遇到的编码问题,特别是在使用libxml2时出现乱码的情况。文章提供了两种解决方案:一是利用iconv库进行编码转换;二是修改SDO对象构造过程。

Tuscany SDO中的中文问题

作者:ling091 时间:2008-12-17

由于SDO使用的xml解析器libxml2对中文字符存在编码转换问题,所以通过xml文件或字符串反序列化创建的SDO对象中的属性中如果有中文就会显示为乱码。而且向反序列化方法传递的参数的形式也可能使得SDO对象创建失败。详见《Tuscany SDO中的Bughttp://ling091.iteye.com/admin/blogs/295438

解决此问题的一种方法是在输出时带有中文的内容时首先对其进行格式转换然后再输出,可以使用iconv提供的api进行UTF-8GB2312之间的编码转换。iconvapi的使用见《Libxml2中的中文问题的解决》http://ling091.iteye.com/admin/blogs/295872

另一种方式是修改SDO,在构造SDO对象时,就对其进行格式转换,但这种方式在直接将SDO对象写入文件或数据库时有可能面临新的问题。

 需要注意的是,从xml字符串或xml文件构造SDO时,编码必须是UTF-8,因为libxml2默认的编码方式就是UTF-8,否则会构造不成功。这里的编码方式不仅仅是指xml文件头部的encoding = "UTF-8", 而是需要使用支持UTF-8编码格式的编辑器进行编辑(Altova XMLSpyUltra Edit32),直接使用txt编辑的中文不是UTF-8编码的。

 另外由于从文件和xml构造SDO对象的实现方式不同,需要xml文件的头部必须是encoding = "UTF-8" ,而字符串写成encoding = "UTF-8" "GB2312",甚至没有xml头都是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值