在ubuntu现开发web项目,采用编码GBK的发现,项目运行起来之后jsp页面中从数据库中拉取的数据中文字体显示为小方块。最终找到了解决方法。
1 首先解决java代来的字体问题,对于jdk1。6解决方法比较简单,在$JAVA_HOME/jre/lib/fonts新建目录fallback直接把相应的中文字体(我用的simsun.ttc),复制到该目录下。其他版本的jdk相对比较复杂一些可以到网上搜索解决方案。
2 第一部完成之后发现,又报表声称图片中的字体正常显示,但数据中拉的中字体还是有很多。现在仔细看一下已经不是没有字体了是乱码问题。剩下的问题有两种解决方法
(1) 修改$TOMCAT_HOME/BIN/CATALINA.SH,在最上面添加一行
CATALINA_OPTS=-Dfile.encoding=GBK
(2)在shell下
locale
命令发现linux默认的locale是utf-8 在命令行键入 LANG=“zh_CN.GBK”,然后在键入locale 命令,没有一下警告
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
则问题解决了。
如果有此警告,sudo vi /var/lib/locales/supported.d/local
修改在末尾加入
zh_CN.GBK GBK
然后 用命令sudo locale-gen 重新生成locale。问题的一解决。
归根是因为jvm的编码的问题,因为jvm默认的依赖本地编码,在(1)中是强行设置jvm的编码。而(2)是修改本地编码。解决方法不一样,但是目的却是一样。