用C语言实现常见的三种中文内码转换

常见的中文内码一般有GB2312(简体中文),GBK和*那边用的BIG5(繁体中文),有时候看一些*编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。网上也有很多中文内码的转换工具,但是在自己的程序中集成这些功能岂不是更好。Windows中提供了MultiByteToWideChar和WideCharToMultiByte两兄弟函数,足可以搞定这些功能了。

以下四个函数分别实现:
大五码转GBK码/GBK转大五码
GB2312码转GBK码/GBK码转GB2312码

于是有人要问了,为什么没有GB2312转BIG5和BIG5转GB2312呢,我们有GBK,可以做一下中转啊。可以将GB2312转成GBK,再将GBK转成BIG5,反之亦然。如果你嫌麻烦,可以自己写一个GB2BIG5/BIG52GB。


//---------------------------------------------------------------------------

 

用C语言实现常见的三种中文内码转换 //  大五码转GBK码:
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换
 //  い地チ㎝瓣 --> 中華人民共和國 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 void  __fastcall BIG52GBK( char   * szBuf)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! strcmp(szBuf,  "" ))
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nStrLen  =  strlen(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 wchar_t  * pws  =   new  wchar_t[nStrLen  +   1 ];
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  try 
用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换   {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 int  nReturn  =  MultiByteToWideChar( 950 ,  0 , szBuf, nStrLen, pws, nStrLen  +   1 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换BOOL bValue  =   false ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换nReturn  =  WideCharToMultiByte( 936 ,  0 , pws, nReturn, szBuf, nStrLen  +   1 ,  " ? " ,  & bValue);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换szBuf[nReturn]  =   0 ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换 __finally
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换delete[] pws;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换

用C语言实现常见的三种中文内码转换

 

//---------------------------------------------------------------------------

 

用C语言实现常见的三种中文内码转换 //  GBK转大五码
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换
 //  中華人民共和國 --> い地チ㎝瓣 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 void  __fastcall GBK2BIG5( char   * szBuf)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! strcmp(szBuf,  "" ))
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return  ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nStrLen  =  strlen(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 wchar_t  * pws  =   new  wchar_t[nStrLen  +   1 ];
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  try 
用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换   {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换MultiByteToWideChar( 936 ,  0 , szBuf, nStrLen, pws, nStrLen  +   1 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换BOOL bValue  =   false ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换WideCharToMultiByte( 950 ,  0 , pws, nStrLen, szBuf, nStrLen  +   1 ,  " ? " ,  & bValue);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换szBuf[nStrLen]  =   0 ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换 __finally
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换delete[] pws;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换

用C语言实现常见的三种中文内码转换

 

//----------------------------------------------------------------------------

 

用C语言实现常见的三种中文内码转换 //  GB2312码转GBK码
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换
 //  * --> 中華人民共和國 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 void  __fastcall GB2GBK( char   * szBuf)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! strcmp(szBuf,  "" ))
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nStrLen  =  strlen(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 WORD wLCID  =  MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nReturn  =  LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nStrLen, NULL,  0 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! nReturn)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  char   * pcBuf  =   new   char [nReturn  +   1 ];
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  try 
用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换   {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换wLCID  =  MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nReturn, pcBuf, nReturn  +   1 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换strncpy(szBuf, pcBuf, nReturn);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换 __finally
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换delete[] pcBuf;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换

用C语言实现常见的三种中文内码转换

 

//---------------------------------------------------------------------------

 

用C语言实现常见的三种中文内码转换 //  GBK码转GB2312码
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换
 //  中華人民共和國 --> * 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 void  __fastcall GBK2GB( char   * szBuf)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! strcmp(szBuf,  "" ))
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nStrLen  =  strlen(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 WORD wLCID  =  MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  int  nReturn  =  LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nStrLen, NULL,  0 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  if ( ! nReturn)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 return ;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  char   * pcBuf  =   new   char [nReturn  +   1 ];
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  try 
用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换   {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换wLCID  =  MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nReturn, pcBuf, nReturn  +   1 );
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换strncpy(szBuf, pcBuf, nReturn);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换 __finally
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换delete []pcBuf;
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 } 

用C语言实现常见的三种中文内码转换 
用C语言实现常见的三种中文内码转换

用C语言实现常见的三种中文内码转换

 

//---------------------------------------------------------------------------

 

用C语言实现常见的三种中文内码转换 //  测试代码 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 void  __fastcall TForm1::Button1Click(TObject  * Sender)
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 {
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  char  szBuf[ 255 ];
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  //  从GB2312转到GBK 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 strcpy(szBuf, Edit1 -> Text.c_str());
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 GB2GBK(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 Edit2 -> Text  =  String(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换  //  从GB2312转到BIG5,通过GBK中转 
用C语言实现常见的三种中文内码转换 

用C语言实现常见的三种中文内码转换 strcpy(szBuf, Edit1 -> Text.c_str());
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 GB2GBK(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 GBK2BIG5(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 Edit3 -> Text  =  String(szBuf);
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换

用C语言实现常见的三种中文内码转换


 
注意,请不要使用String类的c_str()作为上述几个函数的传入参数。

上一篇:阿里巴巴敏捷研发的探索与实践


下一篇:阿里巴巴测试环境稳定性提升实践