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

部署机器

  • 操作系统: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:只是本人的猜测,是否是这样,有待哪位大神来解锁)。

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

时间: 2024-07-31 04:40:05

问题记录-java图片验证码显示乱码的相关文章

java图片验证码包括文字和图片的旋转

java图片验证码包括文字图片的旋转: 此例子演示的是两位数的加减运算,需要的可以通过自己的修改获得更多的方式: 或者我上传的资源中也有其他的两种方式供选择:http://download.csdn.net/detail/huitoukest/8043711 package com.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; im

【问题】做图片验证码时乱码了,在header前加上ob_clean()就能神奇的显示?!

源代码如下: 1 <?php 2 //图片验证码 3 // 该方法必须处于脚本最顶部 4 session_start(); 5 // 验证码图片和对应的验证值的对应关系 6 $table = array( 7 'pic0' => '博美', 8 'pic1' => '仓鼠', 9 'pic2' => '萨摩', 10 'pic3' => '泰迪', 11 ); 12 13 $index = rand(0,3); 14 15 $value = $table['pic'.$ind

工作笔记5.JAVA图片验证码

本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServlet,实现载入验证码的功能. 4.取出存放在Session中的验证码.在Action中推断验证码的正确性 相比較上一篇博客<工作笔记5.JAVA文本框验证码>而言,图片验证码添加了安全性. 在Action中,通过取出Session中的验证码与输入的验证码是否匹配进行推断. 步骤: 1.拷贝Auth

JAVA图片验证码(转自“云在青山”)

首先创建一个生成图片的类,设置一些请求参数,生成随机的字符串,然后字符串传给生成验证码图片的类进行处理,完成后输出到页面 1.创建验证码生成类 package hh.com.util; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons

JAVA图片验证码

package hh.com.util; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class AuthImage extends

自己封装的一个java图片验证码

验证码生成器: 1 package com.lz.Tools; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.Graphics2D; 7 import java.awt.image.BufferedImage; 8 import java.util.Random; 9 10 /** 11 * 验证码生成器 12 * 13 * @author boji

Ubuntu java 图片验证码问题

Oracle JDK 版本: wget http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz\?AuthParam\=1413444038_57c11ebacd07d2252b6288d3e1b6f85f 将其解压安装好.

Java Web:使用Servlet生成网页随机图片验证码

最近在学习Java Web开发,做了一个生成网页随机图片验证码的例子,在此记录. 一.新建Servlet项目: 在MyEclipse中新建Servlet项目,一步步操作就OK,在此不再赘述.建好之后文件目录树如下图: 二.源代码实现: (1)java代码: package com.zdt.identity; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.

Java如何获取图片验证码保存

举例网站:https://my.1hai.cn/Login/?url=http://www.1hai.cn/ 一.场景:出于安全性考虑,越来越多的Web平台登录都会增加图形验证码(图片),或者短信验证码.由于是图片脚本selenium是无法识别的,这是时候我们解析图片验证码. 解决思路:1.通过selenium定位到图片,把图片保存到本地. 2 通过ORC技术将图片验证码转化为文字. 其他解决方法:A:去掉验证码    B:设置万能码 二.Web图片验证码的实现源码: 1 package uti