函数WideCharToMultiByte() 详解
函数原型:
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPWSTR lpWideCharStr,
int cchWideChar,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPCSTR lpDefaultChar,
PBOOL pfUsedDefaultChar
);
函数功能:
此函数把宽字符串转换成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字节字符集。
(—Unicode 转 ANSI(GB2312),UTF8)

参数:
- CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。
| CP_ACP |
当前系统ANSI代码页 |
| CP_MACCP |
当前系统Macintosh代码页 |
| CP_OEMCP |
当前系统OEM代码页,一种原始设备制造商硬件扫描码 |
| CP_SYMBOL |
符号代码页(42) |
| CP_THREAD_ACP |
当前线程ANSI代码页 |
- dwFlags:指定如何处理没有转换的字符,但不设此参数函数会运行的更快一些,我都是把它设为0。
可设的值如下表所示:
WC_NO_BEST_FIT_CHARS
把不能直接转换成相应多字节字符的Unicode字符转换成lpDefaultChar指定的默认字符。也就是说,如果把Unicode转换成多字节字符,然后再转换回来,你并不一定得到相同的Unicode字符,因为这期间可能使用了默认字符。此选项可以单独使用,也可以和其他选项一起使用。
WC_COMPOSITECHECK
把合成字符转换成预制的字符。它可以与后三个选项中的任何一个组合使用,如果没有与他们中的任何一个组合,则与选项WC_SEPCHARS相同。
WC_ERR_INVALID_CHARS
此选项会致使函数遇到无效字符时失败返回,并且GetLastError会返回错误码ERROR_NO_UNICODE_TRANSLATION。否则函数会自动丢弃非法字符。此选项只能用于UTF8。
WC_DISCARDNS
转换时丢弃不占空间的字符,与WC_COMPOSITECHECK 一起使用
WC_SEPCHARS
转换时产生单独的字符,此是默认转换选项,WC_COMPOSITECHECK一起使用
WC_DEFAULTCHAR
转换时使用默认字符代替例外的字符,(最常见的如'?'),与WC_COMPOSITECHECK一起使用。
- lpWideCharStr: 待转换的宽字符串。
- cchWideChar: 待转换宽字符串的长度,-1表示转换到字符串结尾。
- lpMultiByteStr: 接收转换后输出新串的缓冲区。
- cbMultiByte: 输出缓冲区大小,如果为0,lpMultiByteStr将被忽略,函数将返回所需缓冲区大小而不使用lpMultiByteStr。
- lpDefaultChar: 指向字符的指针, 在指定编码里找不到相应字符时使用此字符作为默认字符代替。如果为NULL则使用系统默认字符。对于要求此参数为NULL的dwFlags而使用此参数,函数将失败返回并设置错误码ERROR_INVALID_PARAMETER。
- lpUsedDefaultChar: 开关变量的指针,用以表明是否使用过默认字符。对于要求此参数为NULL的dwFlags而使用此参数,函数将失败返回并设置错误码ERROR_INVALID_PARAMETER。lpDefaultChar和lpUsedDefaultChar都设为NULL,函数会更快一些。
- 返回值: 如果函数成功,且cbMultiByte非0,返回写入lpMultiByteStr的字节数(包括字符串结尾的null);cbMultiByte为0,则返回转换所需字节数。函数失败,返回0。
注意: 函数WideCharToMultiByte使用不当,会给影响程序的安全。调用此函数会很容易导致内存泄漏,因为lpWideCharStr指向的输入缓冲区大小是宽字符数,而lpMultiByteStr指向的输出缓冲区大小是字节数。为了避免内存泄漏,应确保为输出缓冲区指定合适的大小。我的方法是先使cbMultiByte为0调用WideCharToMultiByte一次以获得所需缓冲区大小,为缓冲区分配空间,然后再次调用WideCharToMultiByte填充缓冲区,详见下面的代码。另外,从Unicode UTF16向非Unicode字符集转换可能会导致数据丢失,因为该字符集可能无法找到表示特定Unicode数据的字符。
demo1
wchar_t* pwszUnicode = L"Holle, word! 你好,中国! ";
int iSize;
char* pszMultiByte;
iSize = WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, NULL, 0, NULL, NULL);
pszMultiByte = (char*)malloc(iSize*sizeof(char));
WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, pszMultiByte, iSize, NULL, NULL);
demo2
int n;
CString noUser = _T("我是demo2");
//获得所需缓冲区大小n,为缓冲区分配空间
n = WideCharToMultiByte(CP_OEMCP, 0, noUser, -1, NULL, 0, 0, FALSE);
//m_strNoUser:接收转换后输出新串的缓冲区。
m_strNoUser = new char[n];
memset(m_strNoUser, 0, n*sizeof(char));
WideCharToMultiByte(CP_OEMCP, 0, noUser.GetBuffer(0), n, m_strNoUser, n , 0, FALSE);
相关推荐:
为什么做酒店seo,为什么做酒店 ,ai uehara下载
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
AI提炼主要内容:如何让信息更精准、高效、易懂,女军人ai
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体
怎么看文章是不是AI生成的?揭秘背后的玄机与技巧
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
用AI修改文章,提升写作效率与质量的新时代
仿写AI:智能时代的创作革命,洛江区移动房网站推广
为什么要年前做SEO,企业为什么做seo推广 ,云南ai大数据公司
什么是SEO可以自学吗,seo零基础可以自学吗 ,ai1紫
SEO排序:如何让你的网页在搜索引擎中脱颖而出,平谷抖音seo推广招聘
SEO刷:让你的网站一夜之间登顶搜索引擎!,独特seo技巧
自动生成文章的AI软件,助力内容创作的未来
seo需要什么能力,seo需要哪些技术 ,ai长条弯曲
ChatGPT:我目前无法查看或解析附件,您是否遇到过这样的困扰?,ai+燃烧
SEO优化工具优势:提升网站排名,带来流量和转化的秘密武器,ai圆形造字
SEO行销:开启网站流量增长的秘密武器,百威产品关键词查询排名
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
AI免费生成文章的软件:轻松创作的秘密武器
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
求一个AI软件,彻底改变你的工作与生活!
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
怎么让AI写文章,轻松实现内容创作的智能化
文字写作AI生成工具:让创作更简单、更高效
SEO监控:精准把握网站排名与优化成效的利器,湖南seo排名商家名单
内容创作新时代:自动生成文章的AI如何改变写作生态
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
用AI创作的文章算原创吗?深度背后的逻辑与意义
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
SEO抢权:如何在竞争激烈的市场中占得先机,正规网站建设口碑好
SEO在线服务-让您的网站快速跃升至搜索引擎前列,江西小红书营销推广案例
AI人工智能:开发与应用的必备软件推荐
软件AI的全称:人工智能驱动未来的关键力量
WP原创:打造属于你的独特网站,从这里开始!,一个网站推广一个月需要多少钱
seo适用于什么领域,seo适用于什么领域中 ,ai智能翻译写作机器人v1.0
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
什么是seo概念,什么是seo,sem ,ai音标谐音
ChatGPT页面不自动显示最新消息:如何解决这一困扰,提升使用体验?,斑马ai幼儿百度云网盘
ChatGPT破解版:让人工智能助力你的工作与生活,ai cos帽