utf-8编码容易被忽视的问题
InfoTV的节目单是用XML方式从YP服务器下载的。先走HTTP协议,保存到本地的program.xml,然后解析出来,填入节目列表中。
之前测试的时候,有个问题一直没发现。现在频道变多了,问题出来了。早上新开了一个频道后,发现节目单保存的XML文件有的字节错位了,导致加载进来的频道ID的hash值是错误的。
看了看程序,发现我的下载缓冲区是1024个字节,估计是这里有问题。一次下载1024,然后下一次下载的时候,可能有一个字符被截断了,导致保存下来的是错位的乱码。utf-8一个字符是不定长的,可能是2可能是3,那么下载缓冲区大小不合适就会造成单个字符给截断,缓冲区用1024字节,使用GBK编码搞定,呵呵。
之前没有查到这个问题,是因为频道少,输出内容本身就是1024字节以内,那么一次下载就够了,这个问题无法暴露。现在频道多了,输出内容大于1024字节,需要循环多次才能下载完成。刚好遇到内容被截断了。
这件事情告诉我们,一些细节性的东西不容忽视啊。字符集害死人。
Tags:
上一篇:
zz史记王石列传
下一篇:
拿什么来拯救你,我的股票
相关日志推荐
0 条留言
发表评论