破灭的老婆乒乓梦- -| 回首页 | 2004年索引 | - -哪些人适宜喝酸奶

【原创】17:53 2004-11-12 星期五 关于CStdioFile的问题- -

                                      

 

今天一天几乎没怎么正规工作,都在编写自己的程序,给文件简体繁体转换工具,加上了编码

的转换。

其实程序写得ok,就是目标文件是 unicode的时候,就会有部分乱码。
跟踪程序很久,发现内存里面的信息是正确的,可是写到文本文件后,却出现了乱码。
查看二进制表示,发现有 0x0D 0x0A 0x00的串,乱码因此而起,因为unicode的编码
应该是  0x0D 0x00 0x0A 0x00 才对。可是内存里面没有0x0D呀。

曾经试图修改输出缓冲区里面的0x0D为 0x0D 0x00 ,进行强制的unicode格式化。
未果。跟踪才发现内存里面没有该串。
后来才发现原来是 CStdioFile的write函数在写到文件时会将0x0A自动转化为0x0D 0x0A,
改成 CFile,或者标准c的 FILE 格式,问题解决。咳,小问题而已,折腾了一个下午。
只怪自己以前没有怎么研究过vc,随便就开始用了。想想,以后还是多用tc下的标准c
写吧。vc的类实在没多少精神去研究了,用到时候再现学吧。

下班了,也懒得进一步研究 0x0D 0x0A等情况下的输出会不会变化。先留着吧。
终于多完成了4中编码的转换功能。不错,今天至少有学到点新知识,虽然在其
它vcer眼中有点老。还是记录一下学习日志吧。

=====================
另外,dlg 使用ansi界面和unicode界面的区别:
  要使用unicode界面的话:
   1、 设置中 link的output入口需为wWinMainCRTStartup,
   2、 预定义宏 _UNICODE
   3、 所有的字符串使用 _T("String") 格式。
   4、 getlength 会返回实际的字数。
   5、 unicode使用 wcslen() 来代替 strlen(),其它类似

=======================

收工,回家!18:14 2004-11-12


 


- 作者: 香山叶 访问统计: 2004年11月12日, 星期五 18:15 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=229806

回复

评论内容: