[ 2006/02/26 10:31 | by turbozv ]
|
今天晚上把掌心万年历的内部数据全部做成Unicode,其他地方轻松搞定,不过就是在节日文件festivals.txt上出了不小的问题。
【问题一】在Active Sync软件中将PC上的unicode格式的festivals.txt拷贝到PPC后,被默认地转换为ascii格式
【解决办法】我忍了,改为festivals.dat,这下Active Sync不加转换了
【问题二】Unicode文件格式的识别
【解决办法】头部两个字节 0xff, 0xfe,在写程序的时候注意了一下 fread(buf, 2, 1, fp); 之后是用强制转换来解决无符号数和有符号数的比较问题
if (0xff != (unsigned char)buf[0] && 0xfe != (unsigned char)buf[1]) { //ERROR }
【问题三】Unicode文件的读入,fgetws()不能读正确读入Unicode
【解决办法】这个问题我拿到VC6下面去试了一把,结果正确,但是eVC4就是不对。没办法,自己做解码吧,先读取0xff, 0xfe, 然后顺序读ch1, ch2,把ch1 + ch2 << 8 赋值给一个wch,如此反复。
【问题四】Unicode文件的写回
【解决办法】和上面一个类型的问题,MSDN上也没说太明白,fwprintf()写回的内容仍然是ASCII格式。我觉得很奇怪,难道M$的fwprintf在写入文件的时候自行做了一次wcstombs的转码?不管了,自己再做了一次同上的代码。faint!
【问题一】在Active Sync软件中将PC上的unicode格式的festivals.txt拷贝到PPC后,被默认地转换为ascii格式
【解决办法】我忍了,改为festivals.dat,这下Active Sync不加转换了
【问题二】Unicode文件格式的识别
【解决办法】头部两个字节 0xff, 0xfe,在写程序的时候注意了一下 fread(buf, 2, 1, fp); 之后是用强制转换来解决无符号数和有符号数的比较问题
if (0xff != (unsigned char)buf[0] && 0xfe != (unsigned char)buf[1]) { //ERROR }
【问题三】Unicode文件的读入,fgetws()不能读正确读入Unicode
【解决办法】这个问题我拿到VC6下面去试了一把,结果正确,但是eVC4就是不对。没办法,自己做解码吧,先读取0xff, 0xfe, 然后顺序读ch1, ch2,把ch1 + ch2 << 8 赋值给一个wch,如此反复。
【问题四】Unicode文件的写回
【解决办法】和上面一个类型的问题,MSDN上也没说太明白,fwprintf()写回的内容仍然是ASCII格式。我觉得很奇怪,难道M$的fwprintf在写入文件的时候自行做了一次wcstombs的转码?不管了,自己再做了一次同上的代码。faint!
Dylan
2006/03/05 06:09
呵呵:),对于问题4),我跟他们provision弄过一阵,好象PPC仿真WINDOWS就是要把UNICODE字符存成ASCII的,嘻嘻,可能是fwprinf有问题或是什么的?!!!如果找到原因,顺便告诉我哈!!
分页: 1/1 1