您的位置 首页 php

PHP-GD库中文乱码问题

一、原因

1.编码原因。在用GD库输出中文字符串时,要使用imagettftext()函数。但如果PHP编译时启用–enable-gd-jis-conv选项的话,那么非ASCII字符(例如汉字、拼音、希腊文和箭头) 会被当成EUC-JP编码 (phpinfo中美其名曰“支持JIS编码的字体”), 从而导致乱码(由于西文字体没有假名或汉字,一般表现为全部是方框)。

2.没有选择正确的TTF字体文件。使用gd库时如果要输出中文字符,需要选择正确的TTF字体文件。

二、解决方法

1.建议整站使用UTF8编码,如果你已使用的是GB2312或GBK编码,请使用iconv或自定义的gb2312与utf8转换函数进行字符编码转换。

2.如果你是刚进行php环境搭建,建议将Apache配置文件中的默认字符集修改为UTF8,即AddDefaultCharset UTF8。

3.如果上述方法还不行,请检查你在编译gd库时是否添加了“–enable-gd-jis-conv”选项,此选项是为了让gd库支持日文编码的字库,请取消此选项并重新编译。 此方法本人已验证过,Linux系统下安装配置nginx+php环境,搭建Zabbix服务时碰到,添加了“–enable-gd-jis-conv”选项,Zabbix使用中文界面,更换字体文件前后,查看主机监控图标信息都会出现乱码。

4.使用php gd库产生中文乱码的另一个原因是没有选择正确的TTF字体,你需要选择支持中文的字体,常用的中文字体文件是simsun.ttc和simhei.ttf。

按照上述方法,基本上使用php gd库产生中文乱码时都能够解决。只要仔细排查其实gd库的中文乱码解决起来非常方便。

参考:

文章来源:智云一二三科技

文章标题:PHP-GD库中文乱码问题

文章地址:https://www.zhihuclub.com/79445.shtml

关于作者: 智云科技

热门文章

网站地图