Windows API一日一练(80)MultiByteToWideChar函数
来源:互联网 发布:手机高程测量软件 编辑:程序博客网 时间:2024/06/06 01:24
在软件的使用过程中,经常碰到乱码的情况,那么乱码的原因是什么呢?其实很多情况下,就是字符集的不同,也就是说同一个数字代表不同意思。在Windows里,目前主要有ANSI和UNICODE的方式。如果在UNICODE的方式里直接显示ANSI的字符串是出现乱码的,同样在ANSI函数里也不能显示UNICODE的字符串,而是要进行相互转换才能显示正确的字符串。在NT以后的操作系统里,Windows底层函数已经全部改为UNICODE的方式,如果还是使用ANSI的话,要比UNICODE函数慢一些,系统底层会从ANSI的方式转换为UNICODE方式,然后再显示出来。从ANSI转换为UNICODE的字符串,就可以使用函数MultiByteToWideChar来实现。
函数MultiByteToWideChar声明如下:
WINBASEAPI
int
WINAPI
MultiByteToWideChar(
__in UINT CodePage,
__in DWORD dwFlags,
__in LPCSTR lpMultiByteStr,
__in int cbMultiByte,
__out_ecount_opt(cchWideChar) LPWSTR lpWideCharStr,
__in int 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::string strANSI("测试字符串转换/r/n");
#008
#009 //
#010 const int nBufSize = 512;
#011 TCHAR chBuf[nBufSize];
#012 ZeroMemory(chBuf,nBufSize);
#013
#014 //转换为UNICODE的字符串。
#015 if (MultiByteToWideChar(CP_ACP,0,strANSI.c_str(),strANSI.length(),
#016 chBuf,nBufSize) > 0)
#017 {
#018 //
#019 OutputDebugString(chBuf);
#020 }
#021
#022 }
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- Windows API一日一练(80)MultiByteToWideChar函数
- 书讯 -- Training Kit:SQL Server 2005 实作与维护 I II
- (四)Java EE 5实现Web服务(Web Services)及多种客户端实例-胖客户端
- VS.NET2005安装部署之实战
- 测试驱动需求分析--需求文档评审实例
- Windows API一日一练(84)FlushInstructionCache函数
- Windows API一日一练(80)MultiByteToWideChar函数
- (三)Java EE 5实现Web服务(Web Services)及多种客户端实例-瘦客户端
- 书评 -- Inside Microsoft SQL Server 2005 : T-SQL Querying,T-SQL Programming
- Windows API一日一练(79)GlobalMemoryStatusEx函数
- ASP.NET AJAX 之服务器端页面流程
- Windows API一日一练(83)GetModuleFileName函数
- (二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务
- 书评 -- Inside Microsoft SQL Server 2005 : The Storage Engine
- Guru of the Week 条款23:对象的生存期(第二部分)