utf-8编码容易被忽视的问题
本站内容除转载精华分类或注明zz以外,其他均为原创内容。转载请注明出处,yhustc.com版权所有
InfoTV的节目单是用XML方式从YP服务器下载的。先走HTTP协议,保存到本地的program.xml,然后解析出来,填入节目列表中。
之前测试的时候,有个问题一直没发现。现在频道变多了,问题出来了。早上新开了一个频道后,发现节目单保存的XML文件有的字节错位了,导致加载进来的频道ID的hash值是错误的。
看了看程序,发现我的下载缓冲区是1024个字节,估计是这里有问题。一次下载1024,然后下一次下载的时候,可能有一个字符被截断了,导致保存下来的是错位的乱码。utf-8一个字符是不定长的,可能是2可能是3,那么下载缓冲区大小不合适就会造成单个字符给截断,缓冲区用1024字节,使用GBK编码搞定,呵呵。
之前没有查到这个问题,是因为频道少,输出内容本身就是1024字节以内,那么一次下载就够了,这个问题无法暴露。现在频道多了,输出内容大于1024字节,需要循环多次才能下载完成。刚好遇到内容被截断了。
这件事情告诉我们,一些细节性的东西不容忽视啊。字符集害死人。
Tags:
On C/C++ @ 2008-06-04 10:39:00 | By yhustc
« zz史记王石列传
0 Responses to “utf-8编码容易被忽视的问题”
发表评论