一天突然接到项目组说我们的程序生成的图片中中文显示乱码,而且在测试环境显示是正常的,可能是字符集的问题。
既然项目组说测试环境是好的,那就先去测试环境看了下字符集配置,发现测试环境用的zh_CN.GB18030
字体,而正是环境使用的是zh_CN.UTF-8
确实是不同的字符集,所以就开始改tomcat的字符集
改tomcat字符集的步骤:
1、修改运行tomcat的用户的字符集
a、进入到指定用户环境下
b、运行locale命令查看当前用户的编码
c、进入用户家目录下,执行ls -al,然后编辑.bash_profile,
增加或者添加LANG=en_US.UTF-8或LANG=”zh_CN.GBK”(根据需求修改),
然后执行source .bash_profile生效,或者临时修改执行
LANG=en_US.UTF-8或LANG=”zh_CN.GBK”,下次开机时会恢复成原来的编码格式
d、运行locale查看编码已修改完成
2、如果上一步修改之后重启还是不行就修改tomcat的server.xml文件,在以下配置出新增一句
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
变为
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="GBK"/>
3、在
catalina.sh
文件中的JAVA_OPTS中增加-Dfile.encoding=UTF8
配置项,重启服务
在tomcat和系统的字符集都修改正确后项目的图片显示还是乱码o.o,难道不是字符集的问题?
于是询问项目组用的到底是什么字体,项目组给看了代码截图,看到里面有个大大的黑体,难道是系统中没有黑体的字体包??
系统字体包查看方法:
ls /usr/share/fonts/
系统出默认字体意外的可用字体都在这里,可以自己下载新的字体包来扩充字体库,到这里感觉找到了问题的关键,又联想到测试环境是好的,难道是测试环境的系统字体库已经有了黑体了?登录查看果然测试环境的字体库中已经有了几个字体包0.0,哈哈
现在一个是去网上找字体包下载,另一个更安全的方式当然是把测试环境的包直接打包拷贝到线上环境中去,于是,打包传输重启一气呵成,测试,完成~
由这次问题的解决可以发现,有没有乱码可能不止是因为编码和字符集的问题,如果项目中用到了系统中没有的字体来生成什么,也会造成乱码,因为该用的字体找不到嘛、
记录,学习备用、