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

jfreechart在linux下乱码问题

JFreeChart和中文验证码的乱码问题和jsp的编码无关,是由于Java虚拟机找不到字体文件造成的,所以同类的Swing或者AWT的中文乱码问题也适用

环境:
JDK1.6
RedHat5
Tomcat6

解决方法:
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.复制所使用的中文字体文件(如zysong.ttf)到此目录中(如果没有fallback目录,请手动建立。)
$JAVA_HOME/jre/lib/fonts/fallback

或者将Linux系统的字体目录作为JDK下面的一个字体目录连接。
ln -s $FONTS_PATH/FONT_DIR $JAVA_HOME/jre/lib/fonts/fallback

为何要建立fallback目录请参照下面的连接:http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html
sequence.fallback的说明:
If the runtime environment has a directory lib/fonts/fallback and this directory contains valid TrueType or Type 1 fonts, the runtime automatically adds these fonts as fallback fonts for 2D rendering. On Windows, if there is a system EUDC (End User Defined Characters) font registered with Windows, the runtime automatically adds this font as well as a fallback font for 2D rendering
7.重新启动tomcat,大功告成!