今日遇一问题,同一程序在本机windows上正常,在一个linux下则出现乱码。
程序中对一些数据进行了utf-8编码。
后来怀疑是该linux操作系统没有添加utf-8的支持,打开/etc/sysconfig/i18n文件,内容如下:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPROTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
---》默认不支持utf-8编码!!!
添加utf-8支持,修改后如下:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.GB18020:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="LAT0-SUN16"
使修改生效:source /etc/sysconfig/i18n
查看当前系统语言环境:echo $LANG
问题解决。
--------------------------------------------------------------------------------------------------------
如果需要单独修改用户级别的编码,可以修改文件root/.bash_profile,该文件默认是隐藏的。
在该文件中添加下面两行语句:
LANG="zh_CN.UTF-8"
export LANG
然后通过source命令使其生效即可。