- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
各种字符编码间的转换方法:MultiByteToWideChar和MultiByteToWideChar全解
MultiByteToWideChar和MultiByteToWideChar对各种字符编码间的转换
函数原型:
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);
此函数把宽字符串转换成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字节字符集。参数:
CodePage: 指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,你也可以使用如下所示代码页之一。
参数说明:1、CodePage——指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,可选择以下代码页:CP_ACP?? //当前系统ANSI代码页?????????? CP_MACCP?? //当前系统Macintosh代码页?????????? CP_OEMCP?? //当前系统OEM代码页,一种原始设备制造商硬件扫描码?????????? CP_SYMBOL //Symbol代码页,用于Windows 2000及以后版本????????? CP_THREAD_ACP //当前线程ANSI代码页,用于Windows 2000及以后版本????????? CP_UTF7 //UTF-7,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL?????????? CP_UTF8 //UTF-8,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL????????? 用 GetLocaleInfo 函数获取当前系统的代码页,936: 简体中文, 950: 繁体中文,949:韩文2、dwFlags—— 一般用 0 就可以了????????? 指定是否转换成预制字符或合成的宽字符,对控制字符是否使用像形文字,以及怎样处理无效字符:????????? MB_PRECOMPOSED //总是使用预制字符,即有单个预制字符时,就不会使用分解的基字符和不占空间字符。此为函数的默认选项,不能和MB_COMPOSITE合用MB_COMPOSITE //总是使用分解字符,即总是使用基字符+不占空间字符的方式?MB_ERR_INVALID_CHARS //设置此选项,函数遇到非法字符就失败并返回错误码
ERROR_NO_UNICODE_TRANSLATION,否则丢弃非法字符MB_USEGLYPHCHARS //使用像形字符代替控制字符3、lpMultiByteStr //要转换的字符串4、cbMultiByte //要转换字符串的长度,-1表示转换到字符串结尾。返回原字符串长度。0 作为结束符的字符串5、lpWideCharStr//接收转换后输出的宽字符串的缓冲,如果为 NULL, 就是代表计算生成的字符串的长度。6、cchWideChar//输出缓冲区大小,转化生成的 unicode 字符串缓存的容量。如果为0,lpMultiByteStr将被忽略,函数将返回所需缓冲区大小而不同???? 为0表示调用失败;当cchWideChar为0时,函数将返回所需缓冲区大小int BufSize = MultiByteToWideChar(936,0,s,-1,NULL,0); //计算简体中文字符串 s 转成 widestring 之后占用的内存字节数…… //在此处为 wsbuf 分配内存 BufSize 个字节MultiByteToWideChar(936,0,s,-1,wsbuf,BufSize); //把简体中文字符串 s 转化为 unicode 的 WideString最常用的应该是CP_ACP和CP_UTF8了,前者将宽字符转换为ANSI,后者转换为UTF8。?例一:Unicode转换到GBK#include Windows.h?#define CODE_PAGE_GB18030 54936int Unicode2GBK( wchar_t *pUnicode, char** ppDest){ // get the size of the dest string?const int size = ::WideCharToMultiByte( CODE_PAGE_GB18030, 0/* you can do more for it*/,
pUnicode, -1, 0, 0, 0, 0 );?if ( s
您可能关注的文档
最近下载
- 医师访谈记录.pdf VIP
- Unit 4 School Life 第3-4课时Reading and Rriting 课件 中职高一学年英语高教版基础模块1.ppt
- 最新中药饮片质量标准通则(试行).doc VIP
- 医学临床三基(输血学)-输血免疫学基础(精选试题).pptx VIP
- 我们的大脑的教学课件.ppt VIP
- 洞察世间智慧:哲学伴随我成长课件.ppt VIP
- 超星网课《汽车之旅》超星尔雅答案2023章节测验答案.doc VIP
- 老年人继承法培训课件.pptx VIP
- 科学湘科版二年级上册全册课件.pptx
- 第7课全球航路的开辟和欧洲早期殖民扩张【中职专用】《世界历史》(高教版2023基础模块).pptx VIP
文档评论(0)