急求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