C语言:实现GBK/GB2312/五大码之间的转换
来源:优易学  2011-4-29 14:46:26   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  //------------------------------------------
  // GBK码转GB2312码
  void __fastcall GBK2GB(char *szBuf)
  {
  if(!strcmp(szBuf, ""))
  return;
  int nStrLen = strlen(szBuf);
  WORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);
  int nReturn = LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nStrLen, NULL, 0);
  if(!nReturn)
  return;
  char *pcBuf = new char[nReturn + 1];
  try
  {
  wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_BIG5);
  LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, szBuf, nReturn, pcBuf, nReturn + 1);
  strncpy(szBuf, pcBuf, nReturn);
  }
  __finally
  {
  delete []pcBuf;
  }
  }
  //------------------------------------------
  // 测试代码
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
  char szBuf[255];
  // 从GB2312转到GBK
  strcpy(szBuf, Edit1->Text.c_str());
  GB2GBK(szBuf);
  Edit2->Text = String(szBuf);
  // 从GB2312转到BIG5,通过GBK中转
  strcpy(szBuf, Edit1->Text.c_str());
  GB2GBK(szBuf);
  GBK2BIG5(szBuf);
  Edit3->Text = String(szBuf);
  }

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训