> 백엔드 개발 > PHP 튜토리얼 > iconv乱码求解决

iconv乱码求解决

WBOY
풀어 주다: 2016-06-06 20:16:50
원래의
1323명이 탐색했습니다.

想做个小工具玩玩 结果遇到了中文乱码和、背景不能透明的问题,求大神帮忙看看是咋回事。原谅我是个小白

iconv乱码求解决

<code><?php header("content-Type: text/html; charset=Utf-8");
//1、创建画布
$im = imagecreatetruecolor(800,800);//新建一个真彩色图像,默认背景是黑色,返回图像标识符。另外还有一个函数 imagecreate 已经不推荐使用。

$red = imagecolorallocate($im,255,0,0);
$str = iconv("gb2312","utf-8//IGNORE","大撒旦撒旦撒!hello,world");
imagestring($im,5,0,0,$str,$red);//参数说明:5-指文字的大小。函数 imagestring 不能写中文

//2、加载外部图片
$im_new = imagecreatefromjpeg("baidu.jpg");//返回图像标识符
$im_new_info = getimagesize("baidu.jpg");//取得图像大小,返回一个数组。该函数不需要用到gd库。
/*----
****3、将加载的图片,复制到画布上
****参数说明:
 $im:不用说,指的是画布;
 $im_new:源图片,也就是从外面加载进来的图像
 (30,30):将加载进来的图像,放在画布中的位置,左上角
 (0,0):表示加载的图片,从什么位置开始。(0,0)表示左上角起点,也可以只加载图片的一部分进来的
 (*,*):用*表示,可以为原图片宽和高,也可以小于宽高,只截取一部分,与上面坐标一起使用,表示截取的部分
******/
imagecopy($im,$im_new,30,30,0,0,$im_new_info[0],$im_new_info[1]);//返回布尔值
//3、输出图像
header("content-type: image/png");
imagepng($im);//输出到页面。如果有第二个参数[,$filename],则表示保存图像
//4、销毁图像,释放内存
imagedestroy($im);
?></code>
로그인 후 복사
로그인 후 복사

回复内容:

想做个小工具玩玩 结果遇到了中文乱码和、背景不能透明的问题,求大神帮忙看看是咋回事。原谅我是个小白

iconv乱码求解决

<code><?php header("content-Type: text/html; charset=Utf-8");
//1、创建画布
$im = imagecreatetruecolor(800,800);//新建一个真彩色图像,默认背景是黑色,返回图像标识符。另外还有一个函数 imagecreate 已经不推荐使用。

$red = imagecolorallocate($im,255,0,0);
$str = iconv("gb2312","utf-8//IGNORE","大撒旦撒旦撒!hello,world");
imagestring($im,5,0,0,$str,$red);//参数说明:5-指文字的大小。函数 imagestring 不能写中文

//2、加载外部图片
$im_new = imagecreatefromjpeg("baidu.jpg");//返回图像标识符
$im_new_info = getimagesize("baidu.jpg");//取得图像大小,返回一个数组。该函数不需要用到gd库。
/*----
****3、将加载的图片,复制到画布上
****参数说明:
 $im:不用说,指的是画布;
 $im_new:源图片,也就是从外面加载进来的图像
 (30,30):将加载进来的图像,放在画布中的位置,左上角
 (0,0):表示加载的图片,从什么位置开始。(0,0)表示左上角起点,也可以只加载图片的一部分进来的
 (*,*):用*表示,可以为原图片宽和高,也可以小于宽高,只截取一部分,与上面坐标一起使用,表示截取的部分
******/
imagecopy($im,$im_new,30,30,0,0,$im_new_info[0],$im_new_info[1]);//返回布尔值
//3、输出图像
header("content-type: image/png");
imagepng($im);//输出到页面。如果有第二个参数[,$filename],则表示保存图像
//4、销毁图像,释放内存
imagedestroy($im);
?></code>
로그인 후 복사
로그인 후 복사

乱码原因是因为 浏览器和文件字符集不一致

,你可以把最上面的header去掉,不去掉的话在浏览器将编码改成gb2312。

不能透明是因为你根本没设置,谈何透明。
透明系列函数是alpha,看下哪个是你需要

iconv("gb2312","utf-8//IGNORE","大撒旦撒旦撒!hello,world");
把这里面的gb2312换成gbk试试,gbk的范围更大点

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿