今天做项目,thinkphp使用QrCode生成二维码图片写入中文的时候报错
imagettfbbox(): any2eucjp(): invalid code in input string
代码:
$text = '长按识别二维码';
$box = imagettfbbox($fontsize, $angle, $fontfile, $text);
搜索问题,都是说
重新编译PHP,取消–enable-gd-jis-conv这个参数。
查看PHPINFO后,发现确实存在此参数,去掉重新编译,还是未解决问题。
网上找了一些资料,尝试解决,现在把解决经过贴出来。
查看PHPINFO后,未发现存在此参数,未解决问题。
代码如下:
function strToUtf8($str){
$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));
if($encode == 'UTF-8'){
return $str;
}else{
return mb_convert_encoding($str, 'UTF-8', $encode);
}
}
$text = '长按识别二维码';
$box = imagettfbbox($fontsize, $angle, $fontfile, strToUtf8($text));
未解决。
代码如下:
function to_unicode($string)
{
$str = mb_convert_encoding($string, 'UCS-2', 'UTF-8');
$arrstr = str_split($str, 2);
$unistr = '';
foreach ($arrstr as $n) {
$dec = hexdec(bin2hex($n));
$unistr .= '&#' . $dec . ';';
}
return $unistr;
}
mb_encode_numericentity
函数转换字符编码代码如下:
$encoded_char = mb_encode_numericentity('长按识别二维码', array(0x0080, 0xffff, 0, 0xffff), 'UTF-8');
使用示例代码如下:
$text = '长按识别二维码';
$text = mb_encode_numericentity($text, array(0x0080, 0xffff, 0, 0xffff), 'UTF-8');
$box = imagettfbbox($fontsize, $angle, $fontfile, strToUtf8($text));
问题得到解决。
出处:www.l1mn.com
原文标题:php文字生成图片报错imagettfbbox(): any2eucjp(): invalid code in input string问题解决
原文地址:https://www.l1mn.com/p/kvuej.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Copyright © L1MN.COM 联系方式:l1mnfw@163.com