(转)用 API 作简繁体转换(Big5 GB)
来源:互联网 发布:cmmi软件成熟度 编辑:程序博客网 时间:2024/04/30 12:48
1. 输入Big5字符,返回Gb简体字符
//----------------------------
//函数输入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字符
//---------------------------------------------------------------------------
//函数输入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(0x0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);
//给wszUnicode分配内存
wszUnicode=new wchar_t[iLen+1];
//转换Gb码到Unicode码,使用了API函数MultiByteToWideChar
MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);
//计算转换的字符数
iLen=WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
//给pszBig5分配内存
pszBig5=new char[iLen+1];
//转换Unicode码到Big5码,使用API函数WideCharToMultiByte
WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, pszBig5,iLen, NULL, NULL) ;
//返回Big5码字符
sBig5=pszBig5;
//释放内存
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszBig5;
return sBig5;
}
转自:http://www.cppblog.com/FongLuo/archive/2008/12/28/63517.html
- (转)用 API 作简繁体转换(Big5 GB)
- 用 API 作简繁体转换
- 用API 作简繁体转换
- 用API 作简繁体转换
- 用API 作简繁体转换
- 用API 作简繁体转换
- 用API 作简繁体转换
- VC++用 API 作简繁体转换
- Big5和Gb编码转换
- 用Python实现GB与BIG5码的转换
- 用Python实现GB与BIG5码的转换
- BIG5到GB的转换技术
- BIG5到GB的转换技术
- BIG5->GB
- (转)简体繁体转换代码(Big5-GB | GBK简体-GBK繁体)
- (转)简繁体转换函数
- 繁體中文/BIG5 簡體中文/GB 转换
- GB/BIG5/UTF-8 文件编码批量转换程序
- firefox的dom和ie下的dom (previousSibling,nextSibling)
- 云风说:但我偏执于坚持对那些付出努力坚辛只为了有朝一日摆脱当下状态的人保留一丝轻蔑的态度。
- 游戏引擎的三种架构方式
- android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息
- 自动刷新页面的实现方法总结:
- (转)用 API 作简繁体转换(Big5 GB)
- list 分页
- 自己动手写代码模仿MSN风格的弹窗
- MacBook筆記本電腦之初体验
- 自己动手写驱动禁用电脑主板喇叭!!
- Android问题集锦转载之二:Error generating final archive: Debug certificate expired on解决方案
- 整理出15个Android很有用的代码片段(技巧)ophone
- 抓包分析TCP三次握手
- 用VC6.0编译Windows驱动程序