/* BG2312 To GBK switch (GetSystemDefaultLangID()) { case 0x0804://CHINESE_SIMPLIFIED break; case 0x0404://Chinese (Taiwan Region) break; default: break; } */ BOOL GB2312_GBK(CONST IN PWCHAR pSrc, OUT PWCHAR pDst, int uSize) { BOOL bRet = FALSE; ULONG ulLCID; int nReturn; __try { if (pSrc == NULL || pDst == NULL || uSize <= 0) __leave; ZeroMemory(pDst, uSize * sizeof(WCHAR)); ulLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC); nReturn = LCMapStringW(ulLCID, LCMAP_TRADITIONAL_CHINESE, pSrc, lstrlenW(pSrc), NULL, 0); if(nReturn == 0) __leave; if (uSize < nReturn + 1) __leave; ulLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC); LCMapStringW(ulLCID, LCMAP_TRADITIONAL_CHINESE, pSrc, nReturn, pDst, nReturn + 1); bRet = TRUE; } __finally { } return bRet; }