Home >php教程 >php手册 >GD汉字显示原理

GD汉字显示原理

WBOY
WBOYOriginal
2016-06-13 10:25:211228browse

在这里跟大家讲一下GD中显示中文的原理吧。相信大家看完了可以随手就写一个出来。   
PHP中的GD库其实是支持中文的,但是必须要以UTF-8格式的参数来传递,可以实验以下的小程序。
你将能够看到“中文OK”字样的图形显示出来。(
UTF-8:Unicode Transfer Format 8 是Unicode 的一种兼容表示方法) 
Header("Content-type: image/gif");
$im = imagecreate(400,300);
$bkg = ImageColorAllocate($im, 0,0,0);
$clr = ImageColorAllocate($im, 255,255,255);
$fnt = "c:/winnt/fonts/simhei.ttf";
// if 98/95 "c:/windows/fonts/simhei.ttf";
$str = chr(0xE4).chr(0xB8).chr(0xAD).chr(0xE6).chr(0x96).chr(0x87)."OK";
// "中文OK" in UTF-8ImageTTFText($im, 20, 0, 10, 20, $clr, $fnt, $str);
ImageGif($im);
ImageDestroy($im);?>   
如果仅仅是要显示一个固定的中文字符串那么可以在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。 
for($i = 0x81;
$i // 0x81 - 0xFE
for($j = 0x40; $j // 0x40 - 0x7E 0x80 - 0xFE
if($j != 0x7F){
echo chr($i).chr($j);
} } }?>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn