1 Star 0 Fork 51

fadakang / quick-media

forked from 一灰灰Blog / quick-media 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
md2imgChineseMessyCode.md 2.56 KB
一键复制 编辑 原始数据 按行查看 历史
yihui 提交于 2017-11-23 18:17 . #3 新增问题修复文档 & 添加实例

markdown转图片中文乱码

在本机(Mac系统)上测试,markdown转图片,妥妥的,没啥问题;可丢在阿里云服务器上就诡异了

1. 问题表征

在阿里云上部署的服务,提供markdonw转图片,本来一切都妥妥的,结果发现传中文过来时,中文全部被方框框给替换掉了,即出现中文乱码了!!!

关注几点:

  1. 本机测试ok(mac系统)
  2. 在windows虚拟机测试也ok
  3. linux系统部署失败
  4. 服务接收的中文非乱码,utf8格式
  5. 生成图片的中文签名正常(采用自定义的娃娃体)

2. 问题分析和解决

  1. 当出现这个问题时,第一感觉就是中文传给服务的时候就乱码了,这个很容易定位否定

    • 常见手段1 : 打日志输出参数
    • 常见手段2 : 远程debug
  2. 中文签名正常,markdonw里面的中文乱码

    • 到这里,刚开始也是怀疑编码格式不对导致,因此设置中文的编码格式,打点输出接受参数的实际编码
  3. 上面两个都排除之外,依然没有啥头绪,这个问题就搁置了一段时间,直到再次在一个项目中遇到了这个问题,才怀疑到可能是系统的字体支持问题

  4. 百度/google上搜索,发现jre默认不支持中文字体,采用awt进行绘图时,中文乱码

尝试修复问题

  • 下载宋体 : simsun.ttf

  • 安装到jre的字体目录

    // 登录到服务器
    
    // 下载字体
    wget https://github.com/liuyueyi/quick-media/tree/master/common/src/main/resources/font/simsun.ttf
    
    // 安装字体, jdk的目录与实际相关
    cp simsun.ttf /usr/local/jdk/jre/lib/fonts/
  • 重启应用

  • 再次测试

到此解决问题

3. 小结说明

事后想想,这个其实是一个很明显的问题,自定义的中文签名没有问题,但是其他的中文乱码,这里就可以说明不少的问题了

其次就是,刚开始遇到时,排除几个问题之后,没啥头绪,就放掉了,没有继续深究这个问题,导致搁置了较长的时间,有点坑

最后也是最重要的一点,个人维护的项目,总感觉激情不是特别的足,有鸵鸟心态,这个问题还是在实际的工作项目中,再次遇到后,并没有花多久就定位并解决掉,原因何在?因为工作的这个需求,必须得完成,遇到问题不管怎么样,必须得想办法去fix掉,不然这个工资就没法愉快的领取,所以还是有压力才有动力

Java
1
https://gitee.com/sprintf3322/quick-media.git
git@gitee.com:sprintf3322/quick-media.git
sprintf3322
quick-media
quick-media
master

搜索帮助