关于VS2005 unicode字符集环境

来源:互联网 发布:java float 大小 编辑:程序博客网 时间:2024/06/05 16:09

      习惯了ascii字符集上的操作,突然之间给我了unicode,突然有点接受不了。

      最近,用VS2005开发wince上层应用,就不得不面对这个问题了。比如CString是TCHAR类型,而unicode上#define TCHAR wchat_t 以宽字节来定义CString对象,这就是为什么加个_T()的因由了。

      你要是取个txt文件显示在编辑框上吧,一般txt文件是以ascii字符存储,那么要嘛你可以另存为unicode存储,要嘛你就需要在程序上处理一下了(要是直接提取显示的话就会乱码了),这就需要MultiByteToWideChar()这个函数来转换一下了:

                 int dwnum = MultiByteToWideChar(CP_ACP,0,chbuf,-1,NULL,0);//,ch,-1,NULL,0); //多字节转宽字节
                 CString buf;
                 MultiByteToWideChar(CP_ACP,0,chbuf,-1,buf.GetBuffer(),dwnum);

其中呢,chbuf存的呢就是我们读到的txt数据,通过以上方式转换为宽字节存在了CString buf这里面了,这样出来显示在编辑框上的值就不会乱码。(原因很清楚了)

 

那要是把编辑框里面的数据写到txt文本里面呢,同理:
               DWORD dwNum = WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,s,-1,ch,sizeof(ch),NULL,NULL); 
               file.Write(ch,dwNum);

WideCharToMultiByte()这个函数的作用就不言而喻了。

 

当然,还有其他的方法可以实现转换。

原创粉丝点击