据最新统计,目前有78.4%的网站使用php开发,其中包括Facebook、360.cn、维基百科、WordPress等知名网站,那当这些使用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教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/8695/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料