本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

Seeking somebody...


我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:竹,劲竹;刀,快刀
日志总数:17
评论数量:26
留言数量:0
访问次数:205248
建立时间:2005年6月8日




[工作·学习]DB2 CLOB及Invalid XML character
软件技术

竹刀 发表于 2006/2/15 18:21:14

嗯,在师兄的指导下,修正了DB2读写大字段的乱码问题。使用CharacterStream代替AsciiStream + Encoding。     之后因为xml文档转换的时候经常报An invalid XML character (Unicode: 0xb)错误。决定在转换前将某些无效字符过滤掉。很自然想到了FilterInputStream,简单override read()方法,把无效字符滤掉就可以了。 public int read() throws IOException {        int b = super.read();         while(0xb == b){               b = super.read();        }         return b;    } 但是,很快redbar告诉我,这个invalid character还存在!怎么?没有过滤掉?!Debug一下,发现竟程序在读这个InputStream的时候,走的是read(byte[],int,int)。 :(     最后,对正确无误的实现高效的read(byte[],int,int)还是比较缺乏信心,直接oerrivde InputStream.read()先用上了。简单的测试了一下,比没有过滤字符时,慢了700-800ms左右,在可以接受的范围内,再找机会调整下吧。      另外,现在把小于0x20,不等于0xA,0xD,0x9的字符都当作无效的滤掉了。还没有弄清楚除了那个0xb外,还会不会有其它的无效字符?如果能够减少判断,效率应该会有些许的提升吧。      发现自己对java.io还不是那么理解与熟悉,需要再好好看看书了。


阅读全文(5789) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.016 second(s), page refreshed 144757749 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号