C语言实现GBK_GB2312_五大码之间的转换计算机二级考试

文章作者 100test 发表时间 2009:04:30 05:23:54
来源 100Test.Com百考试题网


  以下四个函数分别实现:
  大五码转GBK码/GBK转大五码
  GB2312码转GBK码/GBK码转GB2312码
  //------------------------------------------
  // 大五码转GBK码:
  void __fastcall BIG52GBK(char *szBuf)
  {
  if(!strcmp(szBuf, ""))
  return.
  int nStrLen = strlen(szBuf).
  wchar_t *pws = new wchar_t[nStrLen 1].
  try
  {
  int nReturn = MultiByteToWideChar(950, 0, szBuf, nStrLen, pws, nStrLen 1).
  BOOL bValue = false.
  nReturn = WideCharToMultiByte(936, 0, pws, nReturn, szBuf, nStrLen 1, "?", &.bValue).
  szBuf[nReturn] = 0.
  }
  __finally
  {
  0delete[] pws.
  }
  }
  //------------------------------------------
  // GBK转大五码
  void __fastcall GBK2BIG5(char *szBuf)
  {
  if(!strcmp(szBuf, ""))
  return .
  int nStrLen = strlen(szBuf).
  wchar_t *pws = new wchar_t[nStrLen 1].
  try
  {
  MultiByteToWideChar(936, 0, szBuf, nStrLen, pws, nStrLen 1).
  BOOL bValue = false.
  WideCharToMultiByte(950, 0, pws, nStrLen, szBuf, nStrLen 1, "?", &.bValue).
  szBuf[nStrLen] = 0.
  }
  __finally
  {
  0delete[] pws.
  }
  }
  //-------------------------------------------
  // GB2312码转GBK码
  void __fastcall GB2GBK(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, 0).
  if(!nReturn)
  return.
  char *pcBuf = new char[nReturn 1].
  try
  {
  wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC).
  LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nReturn, pcBuf, nReturn 1).
  strncpy(szBuf, pcBuf, nReturn).
  }
  __finally
  {
  0delete[] pcBuf.
  }
  }

相关文章


计算机二级:Blocks下的第一个C 程序计算机二级考试
C语言实现GBK_GB2312_五大码之间的转换计算机二级考试
计算机二级:C 三种排序算法实例代码计算机二级考试
Windows下基于C 的RRDTOOL命令行封装计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛