首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急求unicode与gbk互转函数实现.该如何处理

2012-02-23 
急求unicode与gbk互转函数实现.有了编码表以后,根据那些规则来查询.[解决办法]UTF-8 转 Unicode, Unicode

急求unicode与gbk互转函数实现.
有了编码表以后,   根据那些规则来查询.

[解决办法]
UTF-8 转 Unicode, Unicode 转 GBK, UTF-8 转 GBK
2007-03-02 15:59

#include <windows.h>
#include <stdio.h>

void main() {

//三个不同版本的老徐
unsigned char utf8[] = "\xe8\x80\x81\xe5\xbe\x90 ";
unsigned char unicode[] = "\x01\x80\x90\x5f ";
unsigned char ansi[] = "\xc0\xcf\xd0\xec ";

int len;

//UTF-8转UNICODE
len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, NULL,0);
WCHAR * wszUtf8 = new WCHAR[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8, -1, wszUtf8, len);

MessageBoxW(NULL, (const wchar_t*)wszUtf8, NULL, MB_OK);

//UNICODE转ANSI,实际上经过两次转换 UTF-8 已经变成了 GBK 编码
len = WideCharToMultiByte(CP_ACP, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszUtf8, -1, szGBK, len, NULL,NULL);

MessageBoxA(NULL, (const char*)szGBK, NULL, MB_OK);

delete[] szGBK;
delete[] wszUtf8;

}
[解决办法]
WideCharToMultiByte
MultiByteToWideChar

查查MSDN 吧

或者使用标准库函数:
mbstowcs/wcstombs
[解决办法]
标准库函数:
mbstowcs/wcstombs
[解决办法]
可能还需要
setlocale

热点排行