基础概念:
1 字符集 字符集就是编码的集合,例如unicode、GBK、GB2312等都属于字符集。
2 编码 编码就是字符的表现形式,例如unicode字符集就能够用UTF-8、UTF-16和UTF-32编码。
GBK与UTF-8转换的核心问题分析。 GBK是一种字符集,而UTF-8是一种编码,因此通常我们研究的GBK与UTF-8的转换问题,其实就是GBK与Unicode字符集的转化问题,由于GBK和Unicode的字符(主要讨论汉字字符)之间没有必然的联系,因此通常是采用查表的方法来实现GBK和Unicode之间的转化。在完成GBK与Unicode编码的转化后,剩下的工作就是如何把Unicode以UTF-8的形式表现出来了。
搞清楚编码问题,接下来要做的就是如何进行编码转换?在linux平台下,有iconv()函数可供使用,那么在Windows平台下该如何处理呢?其实处理的方法有很多,如Windows API / IBM ICU4C 等,作者推荐使用windows平台下的iconv()函数,因为相对于使用Windows API,iconv库可以方便的跨平台;而相对于IBM公司的ICU4C, iconv库要小很多。
下面给出几个windows下 iconv库的链接: (1) MinGW使用的编译好的库,能够直接使用。 http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/
(2) GNU开源源代码,需要之间编译成相应的动态库或者是静态库。 http://www.gnu.org/software/libiconv/ 这个iconv源代码需要自己编译。下面给出在Windows下使用MinGW和MSYS编译的过程。 (a) 安装autoconf工具 (b) 依次执行下列命令(编译为静态库) ./configure --prefix=/home --enable-static --disable-shared make make install 那么编译后,在/home目录中就会看到编译后的输出。