您现在的位置是:首页 >

汉字机内码转换 三种常见中文内码的转换方法!

火烧 2022-09-15 20:15:02 1057
三种常见中文内码的转换方法! 我们平时常见的三种中文内码是 GB 简体中文 GBK BIG 繁体中文 网上有很多中文内码的专用转换工具 我们碰到由于内码不一致而导致的乱麻问题 用这些工具可以进行相互转

三种常见中文内码的转换方法!  

汉字机内码转换 三种常见中文内码的转换方法!
我们平时常见的三种中文内码是 GB (简体中文) GBK BIG (繁体中文) 网上有很多中文内码的专用转换工具 我们碰到由于内码不一致而导致的乱麻问题 用这些工具可以进行相互转换

  但论坛里经常有人问如何在自己的程序中集成这些功能呢?本文将介绍如何利用 Windows 提供的API 函数来实现 转换涉及到的 API 函数主要有两个 MultiByteToWideChar 和 WideCharToMultiByte 有关这两个函数的详细文档请参考 MSDN 本文不再赘述   本文将介绍四个转换函数分别实现如下的转换 * Big => GBK * GBK => Big * GB => GBK * GBK => GB   有关 GB =〉BIG 的转换以及 BIG =〉GB 的转换可以通过 GBK 间接实现 先将 GB 转成 GBK 再将 GBK 转成 BIG 反之亦然 当然也可以自己实现它们之间的直接转换 // Big => GBK void BIG GBK(char *szBuf) {   if(!strcmp(szBuf ))    return;   int nStrLen = strlen(szBuf);   wchar_t *pws = new wchar_t[nStrLen + ];   try   {    int nReturn = MultiByteToWideChar( szBuf nStrLen pws nStrLen + );    BOOL bValue = false;    nReturn = WideCharToMultiByte( pws nReturn szBuf nStrLen + ? &bValue);    szBuf[nReturn] = ;   }   __finally   {    delete[] pws;   } } // // GBK => Big void GBK BIG (char *szBuf) {

  if(!strcmp(szBuf ))    return ;   int nStrLen = strlen(szBuf);   wchar_t *pws = new wchar_t[nStrLen + ];   __try   {    MultiByteToWideChar( szBuf nStrLen pws nStrLen + );    BOOL bValue = false;    WideCharToMultiByte( pws nStrLen szBuf nStrLen + ? &bValue);    szBuf[nStrLen] = ;   }   __finally   {    delete[] pws;   } } // // GB => GBK void GB GBK(char *szBuf) {   if(!strcmp(szBuf ))    return;   int nStrLen = strlen(szBuf);   WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED) SORT_CHINESE_PRC);   int nReturn = LCMapString(wLCID LCMAP_TRADITIONAL_CHINESE szBuf nStrLen NULL );   if(!nReturn)    return;   char *pcBuf = new char[nReturn + ];   __try   {    wLCID = MAKELCID(MAKELANGID(LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED) SORT_CHINESE_PRC);    LCMapString(wLCID LCMAP_TRADITIONAL_CHINESE szBuf nReturn pcBuf nReturn + );    strncpy(szBuf pcBuf nReturn);   }   __finally   {    delete[] pcBuf;   } }

lishixinzhi/Article/program/net/201311/12393  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码