windowsapi函数库:Windows API一日一练(80)MultiByteToWideChar函数



  在软件Software使用过程中经常碰到乱码情况那么乱码原因是什么呢?其实很多情况下就是区别也就是说同个数字代表区别意思在Windows里目前主要有ANSI和UNICODE方式如果在UNICODE方式里直接显示ANSI串是出现乱码同样在ANSI里也不能显示UNICODE而是要进行相互转换才能显示正确在NT以后操作系统里Windows底层已经全部改为UNICODE方式如果还是使用ANSI要比UNICODE系统底层会从ANSI方式转换为UNICODE方式然后再显示出来从ANSI转换为UNICODE就可以使用MultiByteToWideChar来实现

  MultiByteToWideChar声明如下:

WINBASEAPI

WINAPI
MultiByteToWideChar(
    __in UINT     CodePage,
    __in DWORD    dwFlags,
    __in LPCSTR   lpMultiByteStr,
    __in       cbMultiByte,
    __out_ecount_opt(cchWideChar) LPWSTR lpWideCharStr,
    __in       cchWideChar);


  CodePage是代码表

  dwFlags是转换标志

  lpMultiByteStr是输入ANSI

  cbMultiByte是输入ANSI串长度

  lpWideCharStr是输出UNICODE

  cchWideChar是输出UNICODE缓冲区大小

  例子如下:

#001 //
#002  //串转换
#003  //蔡军生 2007/11/28 QQ:9073204 深圳
#004  void MultiToWide(void)
#005  {
#006         //ANSI
#007         std:: strANSI("测试串转换\r\n");
#008 
#009         //
#010         const  nBufSize = 512;
#011         TCHAR chBuf[nBufSize];
#012         ZeroMemory(chBuf,nBufSize);
#013 
#014         //转换为UNICODE
#015         (MultiByteToWideChar(CP_ACP,0,strANSI.c_str,strANSI.length,
#016              chBuf,nBufSize) > 0)
#017         {
#018               //
#019               OutputDebugString(chBuf);
#020         }
#021 
#022  }


Tags:  api函数大全 api函数 windowsapi函数 windowsapi函数库

延伸阅读

最新评论

发表评论