|
楼主 |
发表于 2007-3-25 20:43:26
|
显示全部楼层
的确,不是Qt程序。问题 的背景是:1,用fwrite()将一个结构写入到文件中,该结构里有一个字符数组成员,通过strcpy()将该成员赋值为“浏览事件历史”,由于文件是二进制的,因此通过Vi无法看到它的中文字符。2,用fread()将该结构提取到内存,为了观察这个字符串的数据,我将该串又重写道一个文件中,然后将Vi的编码方案设为utf8,此时打开这个文件,看到的字符串是这个“ä¯ÀÀʼþÀúÊ·”,再将Vi的编码方案设为GB2312,打开文件看到仍然是乱码。3,用Kate打开这个文件,编码方案改为gb2312,这时就显示了正确的字符了。
我用SlicEdit作为编辑编译工具,但凡是碰到需要处理中文的地方,均用Kate编辑,以保证中文字符符合GB2312编码,也就是说在写入结构数据前,像strcpy(mem, "浏览事件历史")函数中第二个参数在kate下一定是可以正确显示的,但是写入二进制文件时,该结构的中文编码应该是utf8的(因为locale中的中文环境被设成了utf8)。现在的问题是,用fread()提取的内容应该是utf8码,所以用iconv做了utf8到GB2312的转换,但是显示让然是乱码。这里一个问题之一是:为什么同一字符串在Vi下看是乱码,在kate下看又是正常的呢? |
|