solaris 开发记录系列一--iconv支持

一、iconv
系统自带的iconv支持库功能较差,编码支持不全,会导致很多中文图形界面的程序显示有问题。
检测方法:
$iconv-f gb2312 -t utf-32(LE、BE) filename
如果轮换成功,说明已经ok了。
标准系统是不支持的,提示:
Not supported gb2312 to utf-32.

解决方案:使用libiconv
http://www.gnu.org/software/libiconv/
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
编译、安装,建议直接安装到/usr/local目录下,系统默认的不影响,需要使用的时候将/usr/local/bin加至PATH即可。安装好后,让应用自己选择。

$ ./configure 
(--prefix=/usr/local 默认就是/usr/local)
$ make
$ make install
ln-s /usr/local/lib/libiconv* /usr/lib/

验证:
系统自带iconv:
$ /bin/iconv -f gb2312 -t utf-32lib.txt 
Not supported gb2312 to utf-32
libiconv的iconv:
$ /usr/local/bin/iconv -f gb2312 -t utf-32 lib.txt     
xxxx.......

官方推荐:On GNU/Linux and Solaris:
$ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so

但是个人感觉,最好不要使用此方法:
一,不是所有的程序都使用conv转换,就是需要转换,系统自带的iconv也支持大部分编码,自己编译的iconv会影响系统性能;
二,常常有异常

当然这个只是解决问题的方案,看起来灰常简单,但是发现这个问题的过程还是十分艰辛的,光是分析wxWidgets库,就花了很长时间。
分析问题、解决问题,就是最大的乐趣!
iconv解决,可以正常处理gb2312等中文编码,可以进行后面的工作了。

你可能感兴趣的:(Solaris)