PHP的imagettftext方法中文乱码

去年的时候开发了一套 微信三级分销系统 ,今年持续在运营,偶尔碰上客户买源码,于是就卖了。

最近有个客户淘宝(扬和宏商城)上又买了一套,他反馈了一个bug,就是微信分销名片中昵称显示乱码,先win测试了下,是正常的,然后再服务器(Linux)上看了下,确实乱码。查看了下代码,发现是imagettftext()中将文字写到图片中乱码,而且仅仅是中文乱码,英文正常。

分析:
1、确认gb库是否正确安装?没有报这个方法不存在。
2、imagettftext()必须utf-8编码,php的整个项目都是utf-8编码,所以不用太多考虑。如果不是,可以mb_convert_encoding()转换;
3、检查字体是否加载正确,写死了字体路径,而且换了多个字体(常用的中文字体文件是simsun.ttc和simhei.ttf),还是不行,确认应该不是字体的问题。

然后看到网上有人说:请检查你在编译gd库时是否添加了–enable-gd-jis-conv选项,此选项是为了让gd库支持日文编码的字库,请取消此选项并重新编译。

然后我查看了我的php编译选项,是添加了这个参数,难道要重新编译?
正当我蛋疼的时候,又看到一篇文章:

$str=mb_convert_encoding('汉字', "html-entities", "utf-8"); //转成html编码

抱着试试的态度,居然真的可以了。记下~

上天应该眷顾努力的家伙,是吧?

 

博客:http://www.webyang.net/Html/web/article_263.html

你可能感兴趣的:(PHP)