在软件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 }
最新评论