centos使用chrome-cli、chromium或wkhtmltoimage截图时出现的中文字符乱码的解决方案
在centos7
环境下使用chrome-php
或wkhtmltoimage
截图时出现的中文乱码解决方案
最近做了一个小项目,要求使用chrome/chromium
对抓取的页面进行截图保存并上传云服务,因为是composer
依赖包管理,所以使用了chrome-php
核心代码示例:
// navigate $navigation = $page->navigate('https://www.baidu.com'); // wait for the page to be loaded $navigation->waitForNavigation(); // take a screenshot $screenshot = $page->screenshot([ 'format' => 'jpeg', // default to 'png' - possible values: 'png', 'jpeg', 'quality' => 80 // only if format is 'jpeg' - default 100 ]); // save the screenshot $screenshot->saveToFile('/some/place/file.jpg');
结果发现截图不正确,所有中文字符乱码:
后来提了issue,地址
按照对方给的解决方法,并未有效解决。
后来换了各种系统环境,包括更改中文支持,依然如故,只有在自己的mac上是正常的。
所以猜想应该是字体的问题,所以尝试以下方案,最终正常显示:
如以下命令执行出现permission denied
的情况,使用sudo命令执行。
1.fc-list查看是否有中文字体,一般情况下是不存在的,否则也不会乱码。
2.查看是否支持ttmkfdir which ttmkfdir
,如果没有的话,那么安装:yum install -y ttmkfdir
3.centos7系统的话,创建字体目录,mkdir /usr/share/fonts/chinese
4.上传本地的字体文件,例如mac里对应的任何一个ttf字体文件。
5.将字体文件复制到/usr/share/fonts/chinese
下,并执行chmod -R 755 /usr/share/fonts/chinese
6.执行ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
7.编辑/etc/fonts/fonts.conf
,在如下部位添加:
8.运行fc-cache
和fc-cache-64
(如果有的话)
9.运行fc-list
查看刚刚安装的字体是否存在。
10.再一次运行程序脚本,查看截图是否包含正常的中文字符。
相关推荐
changecan 2020-11-19
ECSHOP专属建设 2020-11-13
88427810 2020-11-02
步知道 2020-10-27
Junzizhiai 2020-10-10
jackalwb 2020-10-05
小网管 2020-09-03
shiwenqiang 2020-09-14
85251846 2020-09-14
summerinsist 2020-08-21
87901735 2020-08-19
PinkBean 2020-08-11
85407718 2020-08-09
MichelinMessi 2020-07-30
suosuo 2020-07-28
CARBON 2020-07-28
lizhengfa 2020-07-27
88427810 2020-07-26