©2005 黄友生。本文由原作者发布于MSN Space、CSDN。你可以保存、在非商业软件中使用、在非盈利性文章中引用本文中的部分或全部文字,但请注明作者及原文地址。要用于其它用途,请先联系作者(
eien@eyou.com
)。作者不保证本文完全正确无误、不对因本文中的理论或代码缺陷造成的损失负责。
在CSDN上碰到有人问到这个问题,于是整理一下,存档。以下代码需要 Windows NT 4.0 以上,不支持Windows 9x。编译环境为非UNICODE。
char szGBK[128] = "中华人民共和国";
WCHAR wszUnicode1[128];
WCHAR wszUnicode2[128];
char szBig5[128];
WCHAR wszUnicode1[128];
WCHAR wszUnicode2[128];
char szBig5[128];
// GBK -> UNICODE
int iLen = MultiByteToWideChar( 936, 0, szGBK, strlen( szGBK ), wszUnicode1, 128 );
int iLen = MultiByteToWideChar( 936, 0, szGBK, strlen( szGBK ), wszUnicode1, 128 );
// 把简体字形转换成繁体字形(华->華)
LCMapStringW( MAKELCID( MAKELANGID( LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED ), SORT_CHINESE_PRCP ), LCMAP_TRADITIONAL_CHINESE, wszUnicode1, iLen, wszUnicode2, 128 );
// UNICODE -> BIG5
iLen = WideCharToMultiByte( 950, 0, wszUnicode2, iLen, szBig5, 128, NULL, NULL );
FILE* fp = fopen( "c://test.htm", "wb" );
if( fp != NULL )
{
fwrite( szBig5, 1, iLen, fp );
fclose( fp );
}
if( fp != NULL )
{
fwrite( szBig5, 1, iLen, fp );
fclose( fp );
}
用浏览器打开c:/test.htm, 选择浏览器的编码为 BIG5,即可看到字符串的繁体版本。