图片验证码里面不显示正常的字母或数字,而是显示一些奇怪的乱码,则代表操作系统中没有安装基本的字体。
为了让验证码更难被机器识别,里面字母和数字使用了不同的字体,如果操作系统中没有这些字体,就会出现乱码的情况。虽然验证码中使用的字体是最常用的字体,linux和windows常规情况下都带有这些字体,但有些极简版或者人工删除了相应字体,则会出现乱码情况。
验证码的配置在/WEB-INF/classes/custom.xml
文件中。使用了下列三种字体,分别是Bell MT
nyala
Credit valley
验证码会随机使用其中一种。
<list>
<bean class="java.awt.Font">
<constructor-arg index="0" value="Bell MT"/>
<constructor-arg index="1" type="int" value="0"/>
<constructor-arg index="2" type="int" value="30"/>
</bean>
<bean class="java.awt.Font">
<constructor-arg index="0" value="nyala"/>
<constructor-arg index="1" type="int" value="1"/>
<constructor-arg index="2" type="int" value="30"/>
</bean>
<bean class="java.awt.Font">
<constructor-arg index="0" value="Credit valley"/>
<constructor-arg index="1" type="int" value="1"/>
<constructor-arg index="2" type="int" value="30"/>
</bean>
</list>
如果验证码中出现乱码,可以在操作系统中安装上相应的字体,或者在配置中去除没有字体,也可以更换成操作系统有的字体。