字符编码_Windows资料
1、
1.1、MSDN 函数WideCharToMultiByte(...)
https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx
1.2、https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx
Code Page Identifiers
The following table defines the available code page identifiers.
Identifier | .NET Name | Additional information |
---|---|---|
037 | IBM037 | IBM EBCDIC US-Canada |
437 | IBM437 | OEM United States |
500 | IBM500 | IBM EBCDIC International |
708 | ASMO-708 | Arabic (ASMO 708) |
709 | Arabic (ASMO-449+, BCON V4) | |
710 | Arabic - Transparent Arabic | |
720 | DOS-720 | Arabic (Transparent ASMO); Arabic (DOS) |
737 | ibm737 | OEM Greek (formerly 437G); Greek (DOS) |
775 | ibm775 | OEM Baltic; Baltic (DOS) |
850 | ibm850 | OEM Multilingual Latin 1; Western European (DOS) |
852 | ibm852 | OEM Latin 2; Central European (DOS) |
855 | IBM855 | OEM Cyrillic (primarily Russian) |
857 | ibm857 | OEM Turkish; Turkish (DOS) |
858 | IBM00858 | OEM Multilingual Latin 1 + Euro symbol |
860 | IBM860 | OEM Portuguese; Portuguese (DOS) |
861 | ibm861 | OEM Icelandic; Icelandic (DOS) |
862 | DOS-862 | OEM Hebrew; Hebrew (DOS) |
863 | IBM863 | OEM French Canadian; French Canadian (DOS) |
864 | IBM864 | OEM Arabic; Arabic (864) |
865 | IBM865 | OEM Nordic; Nordic (DOS) |
866 | cp866 | OEM Russian; Cyrillic (DOS) |
869 | ibm869 | OEM Modern Greek; Greek, Modern (DOS) |
870 | IBM870 | IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 |
874 | windows-874 | ANSI/OEM Thai (ISO 8859-11); Thai (Windows) |
875 | cp875 | IBM EBCDIC Greek Modern |
932 | shift_jis | ANSI/OEM Japanese; Japanese (Shift-JIS) |
936 | gb2312 | ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) |
949 | ks_c_5601-1987 | ANSI/OEM Korean (Unified Hangul Code) |
950 | big5 | ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) |
1026 | IBM1026 | IBM EBCDIC Turkish (Latin 5) |
1047 | IBM01047 | IBM EBCDIC Latin 1/Open System |
1140 | IBM01140 | IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) |
1141 | IBM01141 | IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) |
1142 | IBM01142 | IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) |
1143 | IBM01143 | IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) |
1144 | IBM01144 | IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) |
1145 | IBM01145 | IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) |
1146 | IBM01146 | IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) |
1147 | IBM01147 | IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) |
1148 | IBM01148 | IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) |
1149 | IBM01149 | IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) |
1200 | utf-16 | Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications |
1201 | unicodeFFFE | Unicode UTF-16, big endian byte order; available only to managed applications |
1250 | windows-1250 | ANSI Central European; Central European (Windows) |
1251 | windows-1251 | ANSI Cyrillic; Cyrillic (Windows) |
1252 | windows-1252 | ANSI Latin 1; Western European (Windows) |
1253 | windows-1253 | ANSI Greek; Greek (Windows) |
1254 | windows-1254 | ANSI Turkish; Turkish (Windows) |
1255 | windows-1255 | ANSI Hebrew; Hebrew (Windows) |
1256 | windows-1256 | ANSI Arabic; Arabic (Windows) |
1257 | windows-1257 | ANSI Baltic; Baltic (Windows) |
1258 | windows-1258 | ANSI/OEM Vietnamese; Vietnamese (Windows) |
1361 | Johab | Korean (Johab) |
10000 | macintosh | MAC Roman; Western European (Mac) |
10001 | x-mac-japanese | Japanese (Mac) |
10002 | x-mac-chinesetrad | MAC Traditional Chinese (Big5); Chinese Traditional (Mac) |
10003 | x-mac-korean | Korean (Mac) |
10004 | x-mac-arabic | Arabic (Mac) |
10005 | x-mac-hebrew | Hebrew (Mac) |
10006 | x-mac-greek | Greek (Mac) |
10007 | x-mac-cyrillic | Cyrillic (Mac) |
10008 | x-mac-chinesesimp | MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) |
10010 | x-mac-romanian | Romanian (Mac) |
10017 | x-mac-ukrainian | Ukrainian (Mac) |
10021 | x-mac-thai | Thai (Mac) |
10029 | x-mac-ce | MAC Latin 2; Central European (Mac) |
10079 | x-mac-icelandic | Icelandic (Mac) |
10081 | x-mac-turkish | Turkish (Mac) |
10082 | x-mac-croatian | Croatian (Mac) |
12000 | utf-32 | Unicode UTF-32, little endian byte order; available only to managed applications |
12001 | utf-32BE | Unicode UTF-32, big endian byte order; available only to managed applications |
20000 | x-Chinese_CNS | CNS Taiwan; Chinese Traditional (CNS) |
20001 | x-cp20001 | TCA Taiwan |
20002 | x_Chinese-Eten | Eten Taiwan; Chinese Traditional (Eten) |
20003 | x-cp20003 | IBM5550 Taiwan |
20004 | x-cp20004 | TeleText Taiwan |
20005 | x-cp20005 | Wang Taiwan |
20105 | x-IA5 | IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) |
20106 | x-IA5-German | IA5 German (7-bit) |
20107 | x-IA5-Swedish | IA5 Swedish (7-bit) |
20108 | x-IA5-Norwegian | IA5 Norwegian (7-bit) |
20127 | us-ascii | US-ASCII (7-bit) |
20261 | x-cp20261 | T.61 |
20269 | x-cp20269 | ISO 6937 Non-Spacing Accent |
20273 | IBM273 | IBM EBCDIC Germany |
20277 | IBM277 | IBM EBCDIC Denmark-Norway |
20278 | IBM278 | IBM EBCDIC Finland-Sweden |
20280 | IBM280 | IBM EBCDIC Italy |
20284 | IBM284 | IBM EBCDIC Latin America-Spain |
20285 | IBM285 | IBM EBCDIC United Kingdom |
20290 | IBM290 | IBM EBCDIC Japanese Katakana Extended |
20297 | IBM297 | IBM EBCDIC France |
20420 | IBM420 | IBM EBCDIC Arabic |
20423 | IBM423 | IBM EBCDIC Greek |
20424 | IBM424 | IBM EBCDIC Hebrew |
20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC Korean Extended |
20838 | IBM-Thai | IBM EBCDIC Thai |
20866 | koi8-r | Russian (KOI8-R); Cyrillic (KOI8-R) |
20871 | IBM871 | IBM EBCDIC Icelandic |
20880 | IBM880 | IBM EBCDIC Cyrillic Russian |
20905 | IBM905 | IBM EBCDIC Turkish |
20924 | IBM00924 | IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) |
20932 | EUC-JP | Japanese (JIS 0208-1990 and 0212-1990) |
20936 | x-cp20936 | Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) |
20949 | x-cp20949 | Korean Wansung |
21025 | cp1025 | IBM EBCDIC Cyrillic Serbian-Bulgarian |
21027 | (deprecated) | |
21866 | koi8-u | Ukrainian (KOI8-U); Cyrillic (KOI8-U) |
28591 | iso-8859-1 | ISO 8859-1 Latin 1; Western European (ISO) |
28592 | iso-8859-2 | ISO 8859-2 Central European; Central European (ISO) |
28593 | iso-8859-3 | ISO 8859-3 Latin 3 |
28594 | iso-8859-4 | ISO 8859-4 Baltic |
28595 | iso-8859-5 | ISO 8859-5 Cyrillic |
28596 | iso-8859-6 | ISO 8859-6 Arabic |
28597 | iso-8859-7 | ISO 8859-7 Greek |
28598 | iso-8859-8 | ISO 8859-8 Hebrew; Hebrew (ISO-Visual) |
28599 | iso-8859-9 | ISO 8859-9 Turkish |
28603 | iso-8859-13 | ISO 8859-13 Estonian |
28605 | iso-8859-15 | ISO 8859-15 Latin 9 |
29001 | x-Europa | Europa 3 |
38598 | iso-8859-8-i | ISO 8859-8 Hebrew; Hebrew (ISO-Logical) |
50220 | iso-2022-jp | ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) |
50221 | csISO2022JP | ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) |
50222 | iso-2022-jp | ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) |
50225 | iso-2022-kr | ISO 2022 Korean |
50227 | x-cp50227 | ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) |
50229 | ISO 2022 Traditional Chinese | |
50930 | EBCDIC Japanese (Katakana) Extended | |
50931 | EBCDIC US-Canada and Japanese | |
50933 | EBCDIC Korean Extended and Korean | |
50935 | EBCDIC Simplified Chinese Extended and Simplified Chinese | |
50936 | EBCDIC Simplified Chinese | |
50937 | EBCDIC US-Canada and Traditional Chinese | |
50939 | EBCDIC Japanese (Latin) Extended and Japanese | |
51932 | euc-jp | EUC Japanese |
51936 | EUC-CN | EUC Simplified Chinese; Chinese Simplified (EUC) |
51949 | euc-kr | EUC Korean |
51950 | EUC Traditional Chinese | |
52936 | hz-gb-2312 | HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) |
54936 | GB18030 | Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) |
57002 | x-iscii-de | ISCII Devanagari |
57003 | x-iscii-be | ISCII Bangla |
57004 | x-iscii-ta | ISCII Tamil |
57005 | x-iscii-te | ISCII Telugu |
57006 | x-iscii-as | ISCII Assamese |
57007 | x-iscii-or | ISCII Odia |
57008 | x-iscii-ka | ISCII Kannada |
57009 | x-iscii-ma | ISCII Malayalam |
57010 | x-iscii-gu | ISCII Gujarati |
57011 | x-iscii-pa | ISCII Punjabi |
65000 | utf-7 | Unicode (UTF-7) |
65001 | utf-8 | Unicode (UTF-8) |
2、http://www.wuroom.com/post/68/
GB2312,BIG5,Unicode相互转换
//GB2312 转换成 Unicode: wchar_t* GB2312ToUnicode(const char* szGBString) { UINT nCodePage = 936; //GB2312 int nLength=MultiByteToWideChar(nCodePage,0,szGBString,-1,NULL,0); wchar_t* pBuffer = new wchar_t[nLength+1]; MultiByteToWideChar(nCodePage,0,szGBString,-1,pBuffer,nLength); pBuffer[nLength]=0; return pBuffer; } //BIG5 转换成 Unicode: wchar_t* BIG5ToUnicode(const char* szBIG5String) { UINT nCodePage = 950; //BIG5 int nLength=MultiByteToWideChar(nCodePage,0,szBIG5String,-1,NULL,0); wchar_t* pBuffer = new wchar_t[nLength+1]; MultiByteToWideChar(nCodePage,0,szBIG5String,-1,pBuffer,nLength); pBuffer[nLength]=0; return pBuffer; } //Unicode 转换成 GB2312: char* UnicodeToGB2312(const wchar_t* szUnicodeString) { UINT nCodePage = 936; //GB2312 int nLength=WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,NULL,0,NULL,NULL); char* pBuffer=new char[nLength+1]; WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL); pBuffer[nLength]=0; return pBuffer; } //Unicode 转换成 BIG5: char* UnicodeToBIG5(const wchar_t* szUnicodeString) UINT nCodePage = 950; //BIG5 int nLength=WideCharToMultiByte(nCodePage,0, szUnicodeString,-1,NULL,0,NULL,NULL); char* pBuffer=new char[nLength+1]; WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL); pBuffer[nLength]=0; return pBuffer; } //繁体中文BIG5 转换成 简体中文 GB2312 char* BIG5ToGB2312(const char* szBIG5String) { LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC); wchar_t* szUnicodeBuff = BIG5ToUnicode(szBIG5String); char* szGB2312Buff = UnicodeToGB2312(szUnicodeBuff); int nLength = LCMapString(lcid,LCMAP_SIMPLIFIED_CHINESE, szGB2312Buff,-1,NULL,0); char* pBuffer = new char[nLength + 1]; LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE,szGB2312Buff,-1,pBuffer,nLength); pBuffer[nLength] = 0; delete[] szUnicodeBuff; delete[] szGB2312Buff; return pBuffer; } //简体中文 GB2312 转换成 繁体中文BIG5 char* GB2312ToBIG5(const char* szGBString) { LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC); int nLength = LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,NULL,0); char* pBuffer=new char[nLength+1]; LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,pBuffer,nLength); pBuffer[nLength]=0; wchar_t* pUnicodeBuff = GB2312ToUnicode(pBuffer); char* pBIG5Buff = UnicodeToBIG5(pUnicodeBuff); delete[] pBuffer; delete[] pUnicodeBuff; return pBIG5Buff; } 1 //--------------------------------------------------------------------------- //函数输入Big5字符,返回Gb简体字符 //两次转换 //--------------------------------------------------------------------------- AnsiString __fastcall Big2Gb(AnsiString sBig) { char* pszBig5=NULL; //Big5编码的字符 wchar_t* wszUnicode=NULL; //Unicode编码的字符 char* pszGbt=NULL; //Gb编码的繁体字符 char* pszGbs=NULL; //Gb编码的简体字符 AnsiString sGb; //返回的字符串 int iLen=0; //需要转换的字符数 pszBig5=sBig.c_str(); //读入需要转换的字符参数 //计算转换的字符数 iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0) ; //给wszUnicode分配内存 wszUnicode=new wchar_t[iLen+1]; //转换Big5码到Unicode码,使用了API函数MultiByteToWideChar MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen); //计算转换的字符数 iLen=WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ; //给pszGbt分配内存 pszGbt=new char[iLen+1]; //给pszGbs分配内存 pszGbs=new char[iLen+1]; //转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ; //转换Gb码繁体到Gb码简体,使用API函数LCMapString LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen); //返回Gb码简体字符 sGb=pszGbs; //释放内存 delete [] wszUnicode; delete [] pszGbt; delete [] pszGbs; return sGb; } 2 //--------------------------------------------------------------------------- //函数输入Gb字符,返回Big5字符 //两次转换 //--------------------------------------------------------------------------- AnsiString __fastcall Gb2Big(AnsiString sGb) { char* pszGbt=NULL; //Gb编码的繁体字符 char* pszGbs=NULL; //Gb编码的简体字符 wchar_t* wszUnicode=NULL; //Unicode编码的字符 char* pszBig5=NULL; //Big5编码的字符 AnsiString sBig5; //返回的字符串 int iLen=0; //需要转换的字符数 pszGbs=sGb.c_str(); //读入需要转换的字符参数 //计算转换的字符数 iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ; //给pszGbt分配内存 pszGbt=new char[iLen*2+1]; //转换Gb码简体到Gb码繁体,使用API函数LCMapString LCMapString(0) 要确保是在unicode环境下,才可使用WideCharToMultiByte
3、
4、
5、
//GB2312 转换成 Unicode:
wchar_t* GB2312ToUnicode(const char* szGBString)
{
UINT nCodePage = 936; //GB2312
int nLength=MultiByteToWideChar(nCodePage,0,szGBString,-1,NULL,0);
wchar_t* pBuffer = new wchar_t[nLength+1];
MultiByteToWideChar(nCodePage,0,szGBString,-1,pBuffer,nLength);
pBuffer[nLength]=0;
return pBuffer;
}
//BIG5 转换成 Unicode:
wchar_t* BIG5ToUnicode(const char* szBIG5String)
{
UINT nCodePage = 950; //BIG5
int nLength=MultiByteToWideChar(nCodePage,0,szBIG5String,-1,NULL,0);
wchar_t* pBuffer = new wchar_t[nLength+1];
MultiByteToWideChar(nCodePage,0,szBIG5String,-1,pBuffer,nLength);
pBuffer[nLength]=0;
return pBuffer;
}
//Unicode 转换成 GB2312:
char* UnicodeToGB2312(const wchar_t* szUnicodeString)
{
UINT nCodePage = 936; //GB2312
int nLength=WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,NULL,0,NULL,NULL);
char* pBuffer=new char[nLength+1];
WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL);
pBuffer[nLength]=0;
return pBuffer;
}
//Unicode 转换成 BIG5:
char* UnicodeToBIG5(const wchar_t* szUnicodeString)
UINT nCodePage = 950; //BIG5
int nLength=WideCharToMultiByte(nCodePage,0,
szUnicodeString,-1,NULL,0,NULL,NULL);
char* pBuffer=new char[nLength+1];
WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL);
pBuffer[nLength]=0;
return pBuffer;
}
//繁体中文BIG5 转换成 简体中文 GB2312
char* BIG5ToGB2312(const char* szBIG5String)
{
LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),
SORT_CHINESE_PRC);
wchar_t* szUnicodeBuff = BIG5ToUnicode(szBIG5String);
char* szGB2312Buff = UnicodeToGB2312(szUnicodeBuff);
int nLength = LCMapString(lcid,LCMAP_SIMPLIFIED_CHINESE, szGB2312Buff,-1,NULL,0);
char* pBuffer = new char[nLength + 1];
LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE,szGB2312Buff,-1,pBuffer,nLength);
pBuffer[nLength] = 0;
delete[] szUnicodeBuff;
delete[] szGB2312Buff;
return pBuffer;
}
//简体中文 GB2312 转换成 繁体中文BIG5
char* GB2312ToBIG5(const char* szGBString)
{
LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),
SORT_CHINESE_PRC);
int nLength = LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,NULL,0);
char* pBuffer=new char[nLength+1];
LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,pBuffer,nLength);
pBuffer[nLength]=0;
wchar_t* pUnicodeBuff = GB2312ToUnicode(pBuffer);
char* pBIG5Buff = UnicodeToBIG5(pUnicodeBuff);
delete[] pBuffer;
delete[] pUnicodeBuff;
return pBIG5Buff;
}
1 //---------------------------------------------------------------------------
//函数输入Big5字符,返回Gb简体字符 //两次转换
//---------------------------------------------------------------------------
AnsiString __fastcall Big2Gb(AnsiString sBig)
{
char* pszBig5=NULL; //Big5编码的字符
wchar_t* wszUnicode=NULL; //Unicode编码的字符
char* pszGbt=NULL; //Gb编码的繁体字符
char* pszGbs=NULL; //Gb编码的简体字符
AnsiString sGb; //返回的字符串
int iLen=0; //需要转换的字符数
pszBig5=sBig.c_str(); //读入需要转换的字符参数
//计算转换的字符数
iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0) ;
//给wszUnicode分配内存
wszUnicode=new wchar_t[iLen+1];
//转换Big5码到Unicode码,使用了API函数MultiByteToWideChar
MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen);
//计算转换的字符数
iLen=WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
//给pszGbt分配内存
pszGbt=new char[iLen+1];
//给pszGbs分配内存
pszGbs=new char[iLen+1];
//转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte
WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ;
//转换Gb码繁体到Gb码简体,使用API函数LCMapString
LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen);
//返回Gb码简体字符
sGb=pszGbs;
//释放内存
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszGbs;
return sGb;
}
2 //---------------------------------------------------------------------------
//函数输入Gb字符,返回Big5字符 //两次转换
//---------------------------------------------------------------------------
AnsiString __fastcall Gb2Big(AnsiString sGb)
{
char* pszGbt=NULL; //Gb编码的繁体字符
char* pszGbs=NULL; //Gb编码的简体字符
wchar_t* wszUnicode=NULL; //Unicode编码的字符
char* pszBig5=NULL; //Big5编码的字符
AnsiString sBig5; //返回的字符串
int iLen=0; //需要转换的字符数
pszGbs=sGb.c_str(); //读入需要转换的字符参数
//计算转换的字符数
iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ;
//给pszGbt分配内存
pszGbt=new char[iLen*2+1];
//转换Gb码简体到Gb码繁体,使用API函数LCMapString
LCMapString(0)
要确保是在unicode环境下,才可使用WideCharToMultiByte