字符集编码间转换

  在编程中涉及到“中文字符”时,经常需要进行字符集编码间转换。比如代码中以“GBK”字符集编码来处理,而程序中读取文件内容却是“UNICODE”字符集编码(即文件的前两个字节为0XFFFE),此时就涉及到字符集编码间转换,以免出现乱码。

LINUX:

#include <iconv.h>

{
  iconv_t cd = iconv_open(char* tocode, char* fromcode)
  if (cd != (iconv_t)(-1))
  {
    printf("iconv_open successfully!\n");
  }

  char* pinbuf, char* poutbuf;
  int inlen, outlen;
  int ret = iconv(cd, &pinbuf, (size_t *)&inlen, &poutbuf, (size_t *)&outlen)
  if (ret != -1)
  {
    printf("iconv successfully!");
  }

  iconv_close(cd)
}

字符集编码转换依赖于本地系统,命令:iconv --list显示所有可以相互间转换的值。

Windows:

  完成UTF-16(宽字符)转换成其他新字符集编码(__in UINT CodePage).http://msdn.microsoft.com/en-us/library/dd374130(v=vs.85).aspx

int WideCharToMultiByte(
  __in   UINT CodePage,
  __in   DWORD dwFlags,
  __in   LPCWSTR lpWideCharStr,
  __in   int cchWideChar,
  __out  LPSTR lpMultiByteStr,
  __in   int cbMultiByte,
  __in   LPCSTR lpDefaultChar,
  __out  LPBOOL lpUsedDefaultChar
);

  完成其他字符集编码(__in UINT CodePage)转换成UTF-16(宽字符).http://msdn.microsoft.com/en-us/library/dd319072(v=vs.85).aspx

int MultiByteToWideChar(
  __in   UINT CodePage,
  __in   DWORD dwFlags,
  __in   LPCSTR lpMultiByteStr,
  __in   int cbMultiByte,
  __out  LPWSTR lpWideCharStr,
  __in   int cchWideChar
);

posted @ 2011-02-15 15:51  ybtyoyo  阅读(239)  评论(0编辑  收藏  举报