首页 » 建站技术 » PHP 技术 » 浏览内容

如何让gd库支持中文-之解决方案


2005-12-07 20:49:15 5,823 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From: http://www.phpchina.cn/bbs/viewthread.php?tid=1273&extra=page%3D1

在网上找到的,例子稍加改动。

1,原始解决方法A
在这里跟大家讲一下GD中显示中文的原理吧。相信大家看完了可以随手就写一个出来。   

PHP中的GD库其实是支持中文的,但是必须要以UTF-8格式的参数来传递,可以实验以下的小程序。

你将能够看到“中文OK”字样的图形显示出来。

( UTF-8:Unicode Transfer Format 8 是Unicode 的一种兼容表示方法) 

   

如果仅仅是要显示一个固定的中文字符串那么可以在Word、四通立方等软件中将要显示字符转换为UTF-8格式,再粘贴到程序中就可以了。   如果要动态的根据用户的输入来显示相应的中文字符,那么就必须要解决将汉字的内码转化为UTF-8格式的问题。   

我对UNIX/Linux下的中文处理不是很清楚,没有发言权,如果它是采用Unicode内码的话,则应该将Unicode转化为UTF-8的格式。

如果像Win95/98那样采用GBK内码,那么应该先转化为Unicode再转化为UTF-8格式。  

关于GBK-Unicode的转换,我用了一种很愚蠢的解决方法,在这里提出来供大家讨论。希望大家能够提出更加简单高效的解决方法。

我先用这一段小程序把所有的GBK字符显示出来,然后在Word中将它转换为Unicode。依据这个字符串把每一个字符转成为相应的Unicode值。Unicode表示为UTF-8的过程参照了Unicode上的转换程序cvtutf.c, cvtutf.h。 

PHP代码:——————————————————————————–

//定义输出为图像类型
header(“content-type:image/jpeg”);
//新建图象
$pic=imagecreate(500,40);
//定义黑白颜色
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
//定义字体
$font=”c://WINNT//fonts//simhei.ttf”;
//定义输出字体串
$str='你好';
//将gb-2312编码方式转化为UTF-8编码方式(gd库要显示汉字只能用UTF8编码方式哦)
//用的时候把gb-2312之间的连字符去掉,我连着写被本站转意了
$str=iconv('gb-2312','UTF-8',$str);
//写 TTF 文字到图中
imagettftext($pic,15,0,10,25,$white,$font,$str);
//建立 GIF 图型
imagejpeg($pic);
//结束图形,释放内存空间
imagedestroy($pic);
?>

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5064 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14156393 位访客

广告区 Guǎng Gào