GB2312编码如何分别转换成GBK码和Unicode码???????????????????????????
大家不妨提供点参考,最好有源码!!!
谢谢!
问题点数:50、回复次数:3Top
1 楼kao2008()回复于 2005-10-31 15:56:58 得分 20
upTop
2 楼ddmor(火箭-小明)回复于 2005-10-31 17:49:03 得分 15
gb2312到unicode的编码可以使用windows的API函数MultiByteToWideChar,unicode到gb2312也可以借助wsprintf函数:
const wchar_t* c2wc(/*in*/const char* const c,/*out*/wstring &ws)
{
int nLen=GetUnicodeSize(c);
wchar_t *wc=new wchar_t[nLen+1];
MultiByteToWideChar(CP_ACP, 0, c, -1, wc, nLen*2+2);
ws=wc;
delete [] wc;
return ws.c_str();
}
const char* wc2c(/*in*/const WCHAR* const wc,/*out*/string &sC)
{
size_t nL=wcslen(wc);
char* szB=new char[nL*2+1];
wsprintf(szB,"%S",wc);
sC=szB;
delete [] szB;
return sC.c_str();
}
Top
3 楼ddmor(火箭-小明)回复于 2005-10-31 18:00:28 得分 15
GBK是GB码的扩展,需要先将gb2312转为unicode,然后用函数
int WideCharToMultiByte(
UINT CodePage, // code page
DWORD dwFlags, // performance and mapping flags
LPCWSTR lpWideCharStr, // wide-character string
int cchWideChar, // number of chars in string
LPSTR lpMultiByteStr, // buffer for new string
int cbMultiByte, // size of buffer
LPCSTR lpDefaultChar, // default for unmappable chars
LPBOOL lpUsedDefaultChar // set when default char used
);
其中codepage中添入50935就可以了。呵呵
50935 Simplified Chinese Extended and Simplified ChineseTop




