各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar

各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar

ID:6093370

大小:67.50 KB

页数:20页

时间:2018-01-02

各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar_第1页
各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar_第2页
各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar_第3页
各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar_第4页
各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar_第5页
资源描述:

《各种字符编码间的转换方法:multibytetowidechar和multibytetowidechar》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MultiByteToWideChar和MultiByteToWideChar对各种字符编码间的转换函数原型:intWideCharToMultiByte(UINTCodePage,DWORDdwFlags,LPCWSTRlpWideCharStr,intcchWideChar,LPSTRlpMultiByteStr,intcbMultiByte,LPCSTRlpDefaultChar,LPBOOLlpUsedDefaultChar);此函数把宽字符串转换成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字节字

2、符集。参数:CodePage:指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,你也可以使用如下所示代码页之一。参数说明:1、CodePage——指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,可选择以下代码页:CP_ACP  //当前系统ANSI代码页          CP_MACCP  //当前系统Macintosh代码页          CP_OEMCP  //当前系统OEM代码页,一种原始设备制造商硬件扫描码          CP_SYMBOL//Symbol代码页

3、,用于Windows2000及以后版本         CP_THREAD_ACP//当前线程ANSI代码页,用于Windows2000及以后版本         CP_UTF7//UTF-7,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL          CP_UTF8//UTF-8,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL         用GetLocaleInfo函数获取当前系统的代码页,936:简体中文,950:繁体中文

4、,949:韩文2、dwFlags——一般用0就可以了         指定是否转换成预制字符或合成的宽字符,对控制字符是否使用像形文字,以及怎样处理无效字符:         MB_PRECOMPOSED//总是使用预制字符,即有单个预制字符时,就不会使用分解的基字符和不占空间字符。此为函数的默认选项,不能和MB_COMPOSITE合用MB_COMPOSITE//总是使用分解字符,即总是使用基字符+不占空间字符的方式 MB_ERR_INVALID_CHARS//设置此选项,函数遇到非法字符就失败并返回错误码ERROR_N

5、O_UNICODE_TRANSLATION,否则丢弃非法字符MB_USEGLYPHCHARS//使用像形字符代替控制字符3、lpMultiByteStr//要转换的字符串4、cbMultiByte//要转换字符串的长度,-1表示转换到字符串结尾。返回原字符串长度。0作为结束符的字符串5、lpWideCharStr//接收转换后输出的宽字符串的缓冲,如果为NULL,就是代表计算生成的字符串的长度。6、cchWideChar//输出缓冲区大小,转化生成的unicode字符串缓存的容量。如果为0,lpMultiByteStr将

6、被忽略,函数将返回所需缓冲区大小而不同    为0表示调用失败;当cchWideChar为0时,函数将返回所需缓冲区大小intBufSize=MultiByteToWideChar(936,0,s,-1,NULL,0);//计算简体中文字符串s转成widestring之后占用的内存字节数……//在此处为wsbuf分配内存BufSize个字节MultiByteToWideChar(936,0,s,-1,wsbuf,BufSize);//把简体中文字符串s转化为unicode的WideString最常用的应该是CP_ACP和

7、CP_UTF8了,前者将宽字符转换为ANSI,后者转换为UTF8。 例一:Unicode转换到GBK#include #defineCODE_PAGE_GB1803054936intUnicode2GBK(wchar_t*pUnicode,char**ppDest){//getthesizeofthedeststring constintsize=::WideCharToMultiByte(CODE_PAGE_GB18030,0/*youcandomoreforit*/,pUnicode,-1,0,

8、0,0,0); if(size==0){return-1;} char*pDestString=newchar[size+2];::memset(pDestString,0,sizeof(pDestString));//transformintret=::WideCharToMultiByte(CODE_PAGE_G

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。