为什么使用php GD库图片输出中文字会出现乱码

为什么使用php GD库图片输出中文字会出现乱码,第1张

原因:

1、服务器编码原因。由于imagettftext函数字符串参数的默认编码是UTF8,如果服务器编码不一致,而又没有进行相应的字符编码格式转换,很容易出现使用gd库输出图片时中文字符变成乱码

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

解决方法:

根据之前介绍的php gd库产生中文乱码的原理,解决php gd库中文乱码的方法其实很简单。

1、建议整站使用UTF8编码,如果你已使用的是GB2312或GBK编码,请使用iconv或自定义的gb2312与utf8转换函数进行字符编码转换。gb2312与utf8转换函数请参考PHP Ajax传值中文字符乱码如何解决。

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

3、如果上述方法还不行,请检查你在编译gd库时是否添加了–enable-gd-jis-conv选项,此选项是为了让gd库支持日文编码的字库,请取消此选项并重新编译。此方法我没验证过,估计主要是针对Unix下安装配置php环境。Windows环境一般不会出现这种情况,似乎默认PHP配置文件是注释掉的。

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

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

本文实例讲述了php的GD库imagettftext函数解决中文乱码问题的方法。分享给大家供大家参考。具体如下:

使用imagettftext写中文时,常出现乱码问题。解决方法是将中文字符串转为utf-8格式即可。具体代码如下(文件格式为gb2312):

复制代码

代码如下:<?php

$im

=

imagecreatefromjpeg('./1.jpg')

$w

=

imagesx($im)

$h

=

imagesy($im)

$green

=

imagecolorallocate($im,50,100,200)

$str

=

iconv('gb2312','utf-8','幸福就在身边')//解决乱码问题

imagettftext($im,16,0,200,100,$green,'./simhei.ttf',$str)

header("content-type:

image/jpeg")

imagejpeg($im)

imagedestroy($im)

?>

中文文件名需要转码成gbk:

function  saveFile($fileArr,$post_get){

$realFileName=$fileArr["name"]//上传文件的文件名 

$ext_file_name=strrchr($realFileName, '.')?strrchr($realFileName, '.'):"" //获取扩展名

$type=$fileArr["type"]//上传文件的类型 

$size=$fileArr["size"]//上传文件的大小 

$tmp_name=$fileArr["tmp_name"]//上传文件的临时存放路径 

$web_root=$_SERVER['DOCUMENT_ROOT']

//$guidFilePath=$web_root.stripslashes($post_get['tagPath']).'/'. creat_guid(0).$ext_file_name

$FileUrl=stripslashes($post_get['tagPath']).'/'. $realFileName.$ext_file_name

$FilePath=$web_root.$guidFileUrl

$FilePathBK=iconv("utf-8","gbk",$dFilePath)

$md5=strtoupper(md5_file($tmp_name))

try{

if (move_uploaded_file($tmp_name,$FilePathBK)){

return  array("success"=>true, 'msg'=>"", "realFileName"=> $realFileName,"guidFilePath"=>$guidFilePath,'md5'=>$md5,"fileSize"=>$size)

}else{

return  array("success"=>true, 'msg'=>$realFileName.' is not a valid upload file!', "realFileName"=> $realFileName,"guidFilePath"=>$guidFilePath,"fileSize"=>$size)

}

}catch (Exception $e){

return  array("success"=>false, 'msg'=>$e->getMessage(),"realFileName"=> $realFileName,"guidFilePath"=>$guidFilePath,"fileSize"=>$size)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11936762.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存