【C++】UTF-8字符和GB2312字符相互转换函数
2015-12-08 17:00
375 查看
//UTF-8到GB2312的转换 char* U2G(const char* utf8) { int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); wchar_t* wstr = new wchar_t[len+1]; memset(wstr, 0, len+1); MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len); len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); char* str = new char[len+1]; memset(str, 0, len+1); WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL); if(wstr) delete[] wstr; return str; } //GB2312到UTF-8的转换 char* G2U(const char* gb2312) { int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); wchar_t* wstr = new wchar_t[len+1]; memset(wstr, 0, len+1); MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len); len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); char* str = new char[len+1]; memset(str, 0, len+1); WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); if(wstr) delete[] wstr; return str; } 无论是GB2312到UTF-8的转换,还是UTF-8到GB2312的转换,都需要注意的是在使用字符串后,需要删除字符串指针。
相关文章推荐
- 编译原理实验之语法分析(算符优先分析算法(C语言))
- C++之测试snmp的注册模块
- C++之IPC测试单元
- C语言程序设计MOOC视频开讲了
- C++之位测试练习的相关代码
- C++ 建设者继承
- c++中volatile关键字解释
- 推荐下载资源-VC++控件Datagrid
- Visual C++ Tips: 忽略 LNK4099 警告
- Effective C++:规定20: 宁pass-by-reference-to-const更换pass-by-value
- C语言基础--指针和数据存储
- C/C++与python互相调用
- c语言怎么会有这么多的作用域?
- 一个简单的三子棋游戏(c语言实现)
- c语言中递归函数真的好吗?
- c语言中对可变参数列表的简单理解
- c语言中统计二进制位中1的个数的算法优化
- c语言最强大之处--指针
- C语言中的动态内存分配
- C语言基础--函数和结构体