在现在的web应用中(不论是php、jsp或其他的),国际化越来越受重视,所以,要求的并不仅仅是本地的语言了,当我们一直用本地的语言和编码进行文件的编写和编译的时候,就不能满足国际化的要求 ,特别是linux系统,尤其对文件的编码要求严格,下面说说两种比较常用的转换和对应的软件。
中文篇:
我们在中文的环境下面编写的代码,如果没有使用特别的要求规范,将 GB、BIG5、UTF-8 几种文件的格式,如果我们将Encoding为GB或者是BIG5的web应用文件部署到linux服务器,服务器的环境是UTF-8的,这样我们就会出现乱码的情况,而且当apache设置为服务器环境编码的时候,浏览器默认选择的语言就不是正确显示的语言了。所以,我们需要做相对应的转换。
大家都知道,在linux下面有iconv命令,但是他只能是改变文件名的字符编码。对于文件的内容,就使用不上了。。不过,在中文之间的转换,有不少的小工具。http://power4.onlinedown.net/down/gb2utf8.rar
日文篇:
对日文字符编码的处理,Windows于Linux使用不同的字符编码,Windows中使用的日文字符编码为Shift-JIS,Linux中2.4内核使用EUC编码,2.6内核中使用UTF8编码,为了解决这个问题,我们可以使用nkf。相关的源码和安装文件我们可以在rpmfind.net找到。注意,是linux专用的。fedora下面,可以使用
<br />#yum -y install nkf<br />
获得安装。
使用方式的介绍:
nkf命令使用的时候会将指定文本内容按照参数所设定的编码格式打印输出到屏幕上,并不会对原来的文本进行改变,要生成新的编码格式的文本,可以使用管道命令将结果重定向到其他文件中。先介绍几个基本参数:j,s,e,w,这几个参数分别为JIS,Shift-JIS,EUC,UTF编码,如果要使用 UTF8就用w8参数,要使用UTF16就用w16参数,注意这几个字母是小写,另外还有四个大写的参数,J,S,E,W与之前对应相同的字符编码格式,大写于小写的区别在于,小写字母表示输出的编码,大写字母表示假定输入的字符编码,这里用了个“假定”这个词,man文档中是这么说的,我猜想这个意思是说,假如有一个Shift-JIS编码的文件需要转换成UTF8格式,如果指定的参数为E,那么就把这个文件的字符编码当作EUC来处理了。帮助文档中写道可以指定输入文件和输出文件,不过根据我自己的实验好像不能将结果生成为输出文件,只能打印到屏幕上,所以只能使用管道命令,重定向到其他文件中。例如我现在要将一个内容为Shift-JIS编码的文件转换成UTF8格式,就可以使用如下命令,这也是我们经常用到的。
<br />$nkf -w myfile.txt >> test<br />
这个命令的意思就是把文件myfile.txt文件文本的内容转换成utf8的编码然后输出到文件test中,这个时候我们再浏览一下文件test文件的内容应该就能够正常显示了。
nkf还有一个比较有趣的参数,就是可以进行平假名和片假名之间的转换。那就是-h参数,注意,很多命令的帮助档命令的参数也是-h,nkf的帮助命令为–help,-h1参数为片假名到平假名之间的转换,-h2为平假名到片假名之间的转换,-h3为双向转换,前两个参数还好理解,对于第三个双向转换,我没有做过实际验证,不做其他设想了。
这里介绍简单的nkf命令的使用方法,具体的用法请各位参考一下man文档或者帮助命令吧,记得,nkf的帮助命令是–help,不是-h。