Java集成iReport Linux服务器中文无法显示

公司有一个项目专门做数据转图片导出的,今天改动了一下配置发布上去发现图片是有了中文无法显示,中文全是方框。

第一反应是中文乱码,这个项目是一直用的改动配置就能用的中文乱码不可能是项目本身

第二是确认tomcat的环境,tomcat下其他项目中文正常说明不是tomcat本身

第三看检查代码发现使用了BufferedImage+Graphics2D的模式生成图片,于是尝试设置font的字体

设置字体

 试了好几次依然不好使,最后考虑系统环境问题发现系统的字符集是英文的使用命令:locale

最初是英文的,然后参考百度资料修改成中文字符集,这个一定要改最初没改折腾我大半天没好。

注意修改之后要重启系统

 改好之后以为可以了,结果发现还是不行,然后百度各种资料尝试

第一种:把使用的字体复制到服务器jdk的jre下fonts文件夹下失败,

第二种:把字体复制到class目录下失败。

经过各种乱七八糟的命令和资料后确认了几个要点

1,iReport 生成的.jasper 文件本身有字体指定,如果没有设置就是默认字体,

2,与BufferedImage+Graphics2D的字体设置无关这也是setFont无效的原因,他的字体是由.jasper在生成时字体决定的,由于对ireport本身默认字体未知,所以我把所有字体统统设计成了宋体,网上说的一大堆导出字体的误导了好久,ireport本身会加载系统自带的字体。

解答思路初步有了

1、修改ireport的中文字体,统一设置为宋体

2、重新打包项目测试接口,这时候报错提示宋体不支持,

3、安装宋体,参考网络资料安装宋体字体,宋体字体文件叫simsun.ttc 需要改成simsun.ttf
命令不支持请参考:

  1. # 使mkfontscale和mkfontdir命令正常运行

  2. yum install mkfontscale

  3. # 使fc-cache命令正常运行。如果提示 fc-cache: command not found

  4. yum install fontconfig

 4、本来以为这个过程安装完成就可以了结果发现还是不行,最后想到前面系统的字符集还是英文的切换回去重启tomcat问题解决。

查看当前字符集:locale   

修改当前字符集:vim /etc/sysconfig/i18n

修改完成刷新字符集:source  /etc/sysconfig/i18n
重新查看字符集:cat  /etc/sysconfig/i18n 

查看字体
fc-list
查看系统中的中文字体
fc-list :lang=zh
如果验证码不显示或是显示不正常必须安装相应的字体:
如:
cd /usr/share/fonts
mkdir arial
然后将windows中C:/windows/Fonts中Arial里面的.ttf字体文件放到linux的/usr/share/fonts/arial
fc-list如果存在,就可以了 

总结:这个问题本身时Linux系统缺少字体,然后正好遇到Linux安装成了英文字符集,只需要把ireport的中文字体修改掉,然后找对应字体拷贝安装到服务器Linux下,并且改正号系统字符集就可以了。改ireport》安装字体》改系统字符集

编码10年了懒癌发作今天竟然写了文章,给自己加鸡腿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值