C++字符转码
来源:互联网 发布:轩辕剑入灵进阶数据 编辑:程序博客网 时间:2024/05/25 19:58
wchar_t* U8ToUnicode(char* szU8){ //UTF8 to Unicode //由于中文直接复制过来会成乱码,编译器有时会报错,故采用16进制形式 //char* szU8 = "abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00"; //预转换,得到所需空间的大小 int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0); //分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间 wchar_t* wszString = new wchar_t[wcsLen + 1]; //转换 ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen); //最后加上'\0' wszString[wcsLen] = '\0'; return wszString;}char* UnicodeToU8(wchar_t* szUnicode){ // unicode to UTF8 //wchar_t* wszString = L"abcd1234你我他"; //预转换,得到所需空间的大小,这次用的函数和上面名字相反 int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL); //同上,分配空间要给'\0'留个空间 //UTF8虽然是Unicode的压缩形式,但也是多字节字符串,所以可以以char的形式保存 char* szU8 = new char[u8Len + 1]; //转换 //unicode版对应的strlen是wcslen ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), szU8, u8Len, NULL, NULL); //最后加上'\0' szU8[u8Len] = '\0'; return szU8;}char* UnicodeToAnsi(wchar_t* szUnicode){ // unicode to ansi //wchar_t* wszString = L"abcd1234你我他"; //预转换,得到所需空间的大小,这次用的函数和上面名字相反 int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL); //同上,分配空间要给'\0'留个空间 char* szAnsi = new char[ansiLen + 1]; //转换 //unicode版对应的strlen是wcslen ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), szAnsi, ansiLen, NULL, NULL); //最后加上'\0' szAnsi[ansiLen] = '\0'; return szAnsi;}wchar_t* AnsiToUnicode(char* szAnsi){ // ansi to unicode //char* szAnsi = "abcd1234你我他"; //预转换,得到所需空间的大小 int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0); //分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间 wchar_t* wszString = new wchar_t[wcsLen + 1]; //转换 ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen); //最后加上'\0' wszString[wcsLen] = '\0'; return wszString;}
0 0
- 【C#】字符转ASCII码,ASCII码转字符
- 【C#】字符转ASCII码,ASCII码转字符
- 【C#】字符转ASCII码,ASCII码转字符
- 【C#】字符转ASCII码,ASCII码转字符
- [C#][轉]字符转ASCII码,ASCII码转字符
- c 字符转字符串
- C语言转意字符
- C语言--字符转整数
- C语言字符与ASCII码的互转,字符和整型的转换
- Objective C - 字符编码转码 成 GB2312:
- c字符
- c/字符串,字符转数字,数字转字符(转)
- C语言中的宽字符与多字节字符[转]
- C语言字符串,字符转数字,数字转字符
- c/字符串,字符转数字,数字转字符
- C语言字符串,字符转数字,数字转字符
- C语言字符串,字符转数字,数字转字符
- C语言字符串,字符转数字,数字转字符
- nodejs:express 4.x
- JVM学习笔记
- python 利用 fabric 运行脚本, 简化远程及本地操作
- android不在坑系列一:数据库框架的选择
- nodejs:使用多处理器
- C++字符转码
- swift3.0阿里百川反馈
- 题目
- maven工程引用外部jar包
- spring:bean的定义
- 双机热备、双机互备和双机双工,这三者之间的区别
- OpenSSH高级功能之端口转发(Port Forwarding)
- 插入排序
- 深度优先遍历