问题记录-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:只是本人的猜测,是否是这样,有待哪位大神来解锁)。
问题记录-java图片验证码显示乱码的更多相关文章
- Java图片验证码生成工具
直接把以下代码拷贝使用: import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;impo ...
- Java 图片验证码工具
package com.microwisdom.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics ...
- 工作笔记5.JAVA图片验证码
本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServl ...
- Java图片验证码乱码问题
有时部署到linux服务器上的web项目的图形验证码可能会出现乱码问题 这不是编码格式出错了,而是可能服务器上没有图形验证码中限定的那种字体 比如生成图形验证码的代码: Font font = new ...
- JAVA图片验证码
package hh.com.util; import java.io.IOException; import javax.servlet.ServletException; import javax ...
- JAVA图片验证码(转自“云在青山”)
首先创建一个生成图片的类,设置一些请求参数,生成随机的字符串,然后字符串传给生成验证码图片的类进行处理,完成后输出到页面 1.创建验证码生成类 package hh.com.util; import ...
- 自己封装的一个java图片验证码
验证码生成器: package com.lz.Tools; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...
- 一篇Java图片验证码生成的代码
package projectUtil; /** * @author tian * @date 2019/4/1015:58 */ import javax.imageio.ImageIO; impo ...
- 部署到docker容器后图片验证码显示不出来
Dockerfile如下: FROM openjdk:8-jre-alpineARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java&qu ...
随机推荐
- 剑指offer--day05
1.1 题目:二进制中1的个数:输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 1.2 解题思路:通过位移来进行.举例:7(二进制:0111),7 >> 1(得到:001 ...
- 单调栈 && 洛谷 P2866 [USACO06NOV]糟糕的一天Bad Hair Day(单调栈)
传送门 这是一道典型的单调栈. 题意理解 先来理解一下题意(原文翻译得有点问题). 其实就是求对于序列中的每一个数i,求出i到它右边第一个大于i的数之间的数字个数c[i].最后求出和. 首先可以暴力求 ...
- BZOJ1185[HNOI2007] 最小矩形覆盖(旋转卡壳)
BZOJ1185[HNOI2007] 最小矩形覆盖 题面 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形,输出所求矩形的面积和四个顶点的坐标 分析 首先可以先求凸包,因为覆盖了凸包上的顶点,凸 ...
- CentOS 5.5编译安装lnmp
如果是安装Centos6.5记得Perl是必选的,否则无法安装VMWare Tools!!!!切记 如果出现make错误需要安装其他软件,装好后 make clean make install ...
- 初学css 行内元素与块级元素
行内元素与块级元素直观上的区别 1.行内元素会在一条直线上排列,都是同一行的,水平方向排列块级元素各占据一行,垂直方向排列.块级元素从新行开始结束接着一个断行. 2.块级元素可以包含行内元素和块级元素 ...
- UVA 12849 Mother’s Jam Puzzle( 高斯消元 )
题目: http://uva.onlinejudge.org/external/128/12849.pdf #include <bits/stdc++.h> using namespace ...
- JUC并发包基本使用
一.简介 传统的Java多线程开发中,wait.notify.synchronized等如果不注意使用的话,很容易引起死锁.脏读问题.Java1.5 版本开始增加 java.util.concurre ...
- 浅谈使用canvas绘制多边形
本文主要使用坐标轴的使用来绘制多边形,点位则都是在y轴上寻找,这种方法能够更好的理解图形与修改. //id为html里canvas标签的属性id: //x,y为坐标轴的起始位置,因为canvas默认坐 ...
- Java中的集合详解及代码测试
1:对象数组 (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection) (1)集合的由来 我们学习的是Java -- 面向对象 ...
- struts2导入多个xml引入报错<include>
struts.xml <?xml version="1.0" encoding="UTF-8"?> <!-- 指定Struts 2配置文件的D ...