宽字节UTF-8、多字节互转
2018-09-01 05:38:02来源:博客园 阅读 ()
在进行Windows编程时,常常遇到不同字符编码之间的转换以对应不同的输出格式,本文介绍宽字节UTF-8编码格式和多字节之间的项目转换。分别调用Windows底层函数MultiByteToWideChar和 WideCharToMultiByte实现。
1.UTF-8转多字节
std::string u82mb(const char* cont) { if (NULL == cont) { return ""; } int num = MultiByteToWideChar(CP_UTF8, NULL, cont, -1, NULL, NULL); if (num <= 0) { return ""; } wchar_t* buffw = new (std::nothrow) wchar_t[num]; if (NULL == buffw) { return ""; } MultiByteToWideChar(CP_UTF8, NULL, cont, -1, buffw, num); int len = WideCharToMultiByte(CP_ACP, 0, buffw, num - 1, NULL, NULL, NULL, NULL); if (len <= 0) { delete[] buffw; return ""; } char* lpsz = new (std::nothrow) char[len + 1]; if (NULL == lpsz) { delete[] buffw; return ""; } WideCharToMultiByte(CP_ACP, 0, buffw, num - 1, lpsz, len, NULL, NULL); lpsz[len]='\0'; delete[] buffw; std::string rtn(lpsz); delete[] lpsz; return rtn; }
2.多字节转UTF-8
std::string mb2u8(const char* cont) { if (NULL == cont) { return ""; } int num = MultiByteToWideChar(CP_ACP, NULL, cont, -1, NULL, NULL); if (num <= 0) { return ""; } wchar_t* buffw = new (std::nothrow) wchar_t[num]; if (NULL == buffw) { return ""; } MultiByteToWideChar(CP_ACP, NULL, cont, -1, buffw, num); int len = WideCharToMultiByte(CP_UTF8, 0, buffw, num - 1, NULL, NULL, NULL, NULL); if (len <= 0) { delete[] buffw; return ""; } char* lpsz = new (std::nothrow) char[len + 1]; if (NULL == lpsz) { delete[] buffw; return ""; } WideCharToMultiByte(CP_UTF8, 0, buffw, num - 1, lpsz, len, NULL, NULL); lpsz[len]='\0'; delete[] buffw; std::string rtn(lpsz); delete[] lpsz; return rtn ; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- QT5中Json文件与QString的相互转化 2020-03-19
- bit(比特)与Byte(字节)的区别与关系 2019-11-06
- 彻底弄懂UTF-8、Unicode、宽字符、locale 2019-08-16
- C++ string 类详解 2019-04-25
- 编程测试计算机存储的大小端模式 2018-12-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash