首页 » 鲜货 » 正文

phantom将网页转成图片乱码

我们书接上回,继续来说乱码的问题。我也是好久没在centos上操作了,一时间也是翻看各种资料。

其实已经在本地和测试服务器都试过了,是没问题的,但是后来在一个cocker里运行,发现乱码,想必是这个docker有什么问题吧。

1、先是设置了docker的容器编码格式,重启服务,发现不行;

2、设置phantom的编码格式,网上有说:phantom.outputEncoding="GBK"; 但是这个不是node里的方法,应该是页面上会这么用,乱码不是应该用utf8吗,无所谓了,反正是不行;

3、反思phantom的原理,是在一个无头浏览器运行一个html,页面乱码自然是跟页面编码有关,既然都是支持utf8的,那么乱码肯定是因为字体库了。通过fc-list命令查看字体库,发现果然只有默认的一中字体。

一般都能找到这个答案,但是实际上我并没有成功。插个题外话,新docker没有yum命令,运行报错:-bash: yum: command not found。当我查这个问题的时候,都是去163的镜像去西崽rpm包,然后安装,步骤很详细,但是呢,我连镜像都打不开,果然实践才是检验真理的唯一标准。

我是直接下载了字体包:http://a.xzfile.com/down1/MicrosoftYaHeiBold_downcc.zip,然后解压

1、yum -y install fontconfig,安装字体库配置;

2、首先在/usr/shared/fonts目录下新建一个目录chinese/TrueType;

3、把ttf文件丢进去

4、修改权限:chmod -R 755 /usr/share/fonts/chinese;

5、建立字体缓存:cd /usr/share/fonts/chinese/TrueType; mkfontscale; mkfontdir; fc-cache -fv

有一些资料说要install ttmkfdir编辑/etc/fonts/fonts.conf,实际上我并没有这么做,我遇到的问题是我把ttf放进去后并没有生效,后来把文件名中的空格都去掉后运行正常了。

这时候再fc-list查看的时候发现就列出了自己新加的字体

 

参考:

https://jingyan.baidu.com/article/cb5d61050041fa005c2fe003.html