码迷,mamicode.com
首页 > 编程语言 > 详细

问题记录-java图片验证码显示乱码

时间:2018-02-05 15:07:28      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:乱码   version   除了   fonts   img   编码转换   文件夹   编码问题   图标   

部署机器

  • 操作系统:centos 7
  • java版本: java version "1.7.0_80"

问题症状

  • 将一个java web的程序部署到了两台配置相同的服务器上之后(服务器1、服务器2),程序都正常启动,当前端请求注册服务时,会向后台请求图片验证码,然而(服务器1)验证码出现了如图1所示的乱码问题,图二为(服务器2)正常的验证码显示。

图1技术分享图片

图2技术分享图片

问题探索

  • 猜测1:java字符的编码问题
    • 探索过程:将字符编码转换成utf-8编码,但是乱码问题没有得到解决
  • 猜测2:服务器字体问题,由于两台服务器的java环境是一样的,因此猜测两台服务器的字体配置不一致导致的。
    • 探索过程:(ps:以下操作均在linux的root权限下操作)
    1.查看两台服务器的字体版本,通过在服务器上输入如下指令:
rpm -qa | grep font

服务器1技术分享图片

服务器2技术分享图片

上面的两幅图分别显示了服务器1和服务器2的字体库版本,可以看出两台服务器的字体库版本是一样的,因此排除了字体库版本不一样的假设。

2.查看linux字体库里面的字体有哪些
怎样知道字体库的位置呢,通过输入如下指令就可以找到:
find / -name fonts

技术分享图片

进入上图标出的文件夹,指令为:

cd /usr/share/fonts

进入文件夹,发现服务器1的文件夹下有一个文件夹lxy,而服务器2该文件夹下没有文件夹,下图显示了文件文件夹lxy的内容。

技术分享图片

解决方案

  • 将lxy文件夹移动到其他的文件夹(ps:貌似只改文件夹的名称是不行的,必须将该文件夹移出fonts文件夹),然后重启web服务,问题得到解决。指令:

    mv lxy tager

总结

  • 该问题是linux字体库里面的字体文件不同造成的,我猜测java加载字体库时先加载linux系统自带的字体库,如果找不到对应的字体库就会去找java自己的字体库(ps:只是本人的猜测,是否是这样,有待哪位大神来解锁)。

问题记录-java图片验证码显示乱码

标签:乱码   version   除了   fonts   img   编码转换   文件夹   编码问题   图标   

原文地址:https://www.cnblogs.com/cafebabe-yun/p/8417545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!