(解决)java等环境Kaptcha登陆验证码在Linux系统环境下字体乱码

前言:因本次使用的是java项目。但是理论上在其他项目(python、php等)上也可以解决掉。

一、环境

1、在本地测试好的java系统,打包放至linux系统上。启动,登陆时,却发现验证码出现乱码。

    乱码不尽相同,大家所遇到的乱码长得可能千差万别,但万变不离其宗:乱码,不可读,不可用,也看不懂。

二、代码

1、本次使用的是Producer接口。

         private Producer producer;

         String capText = producer.createText();

         BufferedImage bi = producer.createImage(capText);

2、但是使用Graphics2D 也是可以使用此方法解决的。

        BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);

        Font font = new Font("宋体",Font.PLAIN,20);

        Graphics2D g = bi.createGraphics()

三、解决方法(重点!)

1、在linux环境下,找到/usr/share/fonts/lyx/msam10.ttf,删掉这个msam10.ttf文件。

2、在自己的window环境下,找到C:\Windows\Fonts\Times New Roman下的4个ttf文件,上传到linux环境下/usr/share/fonts/lyx/这个目录下。

3、重启应用即可解决验证码乱码问题。

四、原因分析

1、因为是一台全新的linux系统,所以有些字体是缺失的,导致乱码的直接原因。(因为linux默认使用的字体是msam10.ttf)

2、在linux上输入fc-list,会发现,将4个ttf字体放入前后对比(可以看到linux系统字体明显多了):

五、复制4个ttf文件可能遇到的问题

1、没有权限,不让复制。

解决方法:sudo chmod 777 lyx 给这个文件夹赋权限即可。

六、解决之后上图一张

七、至此应该没有什么问题了。《finish》

(也可以查看一下自己的Java项目使用的是什么字体,将对应的字体放在fonts/lyx目录下重启应用即可。(可有可无))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wzhwangzhuohui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值