字符集编码间转换
在编程中涉及到“中文字符”时,经常需要进行字符集编码间转换。比如代码中以“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 );
浙公网安备 33010602011771号