linux下jfreechart乱码问题



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

通用的解决方法是:
解决方法1:
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. 重启resin服务器OK.

解决方法2:
1.将zysong.ttf复制到Java安装目录/jre/lib/fonts
2.修改Java安装目录 %JavaHome%/jre/lib/fonts下的font.ttf文件
  修改首行的数字(数字+1)
  在最后一行添加zysong.ttf -misc-zysong--medium-r-normal--0-0-0-0-c-0-GB18030
3. 将%JavaHome%/jre/lib/fontconfig.RedHat.3.properties.src文件,更名为fontconfig.properties;
4. 建立/usr/share/fonts/zh_CN/TrueType文件夹,拷贝zysong.ttf至该文件夹下.
5. 重启resin服务器OK.

以上方法引用地址:http://zhanghaoeye.iteye.com/blog/708211

解决方法3:

 实在不行就将windows中的字体放到项目包中(最好classpath下,访问方便),自己创建字体.

Font中有两个方法可以创建自定义字体

Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream input);
Font dynamicFont2 = Font.createFont(Font.TRUETYPE_FONT, new File(pathString));

第一种(simsun.ttc在classpath下):

InputStream input = MyCharset.class.getResourceAsStream("simsun.ttc");
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT,  input);

input.close();

第二种:

Font dynamicFont2 = Font.createFont(Font.TRUETYPE_FONT, new File(MyCharset.class.getResource("/simsun.ttc").toURI()));

这样在自己的项目中就可以引用自定义的字体了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值