日期:2014-05-16  浏览次数:20596 次

linux下转化文件的字符编码(jsp文件包含inc文件由于inc文件乱码导致包含有inc的文件都为乱码)

今天测试说我的系统提交不起作用,我打开源代码看到里面有好多的乱码,原来提交后有字符串比较(原来系统中的毛病),所以我先解决乱码问题。
linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。
查了下iconv命令用法如下:
iconv [选项...] [文件...]

有如下选项可用:

输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码

信息:
-l, --list 列举所有已知的字符集

输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息

例如:
iconv -f gbk -t utf8 produceadd.jsp > produceadd_temp.jsp
也可以用
iconv -f gbk -t utf8 -o produceadd_temp.jsp produceadd.jsp
查看produceadd_bak.jsp内容,乱码问题解决了。
然后,执行
mv produceadd.jsp produceadd_bak.jsp
mv produceadd_temp.jsp produceadd.jsp
满怀希望的以为解决了,还是不行,最后没有办法,看来GBK和utf8不能共存,最后只好将linux系统的编码修改了,先将原来修改的恢复了。
再对Linux字符编码设置
默认为utf8,如出现乱码可设置为GBK
手动更改配置文件的命令(最终解决用到下面的配置命令):
shell> vi /etc/sysconfig/i18n
将LANG="zh_CN.UTF-8"修改为:
LANG="zh_CN.GBK"
保存并关闭,运行下面的命令使配置生效:
shell> source /etc/sysconfig/i18n
将终端字符编码显示为简体中文:
shell> vi /etc/profile.d/chinese.sh
添加下面这行:export LC_ALL=zh_CN.GBK
shell> source /etc/profile.d/Chinese.sh

注意:

如果你的系统的jsp页面中包含了文本文件也就是include进来的有文本文件eg:inc,或是其他格式的文本文件,程序发布到redhat enterprize 5.4的虚拟机环境中的时候则有可能出现乱码,这个时候我们一定要进行乱码处理,这个乱码的具体原因就是linux默认的对文本文件的编码方式为utf-8,而我们的文本文件中出现了中文,才导致此种乱码的出现,若想除去乱码请仔细参考(手动更改配置文件的命令(最终解决用到下面的配置命令)

?