继续编码转换
Unicode 有两套编码集,UCS-2 和 UCS-4。Windows 的内部其实是用的 UCS-2 标准,并用 UTF-16 来实现。而非 Windows 系统大多采用了 UTF-8 实现。
大家都知道在windows上wchar_t是2个字节表示,而在Linux上wchar_t是4个字节表示的。这样写跨平台的程序时,就会不统一。
下面是我用到的几个函数,wchar_t与UTF-8编码之间的转换和UTF-16和wchar_t之间的转换。
#ifdef WINDOWS #include <windows.h> #include <stdio.h> #include <ctype.h> #else #include <iconv.h> #include <wctype.h> #include <wchar.h> #include <errno.h> #endif //wchar_t转成UTF-8 int FW2UTF8Convert( const wchar_t* a_szSrc, int a_nSrcSize, char* a_szDest, int a_nDestSize ) { #ifdef WINDOWS return WideCharToMultiByte( CP_UTF8, 0, a_szSrc, -1, a_szDest, a_nDestSize, NULL, NULL ); #else size_t result; iconv_t env; env = iconv_open("UTF-8","WCHAR_T"); if (env==(iconv_t)-1) { printf("iconv_open WCHAR_T-