程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> GD漢字顯示原理

GD漢字顯示原理

編輯:關於PHP編程

在這裡跟大家講一下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。 
$i <= 0xFE; $i++){
// 0x81 - 0xFE
for($j = 0x40; $j <= 0xFE; $j++){
// 0x40 - 0x7E 0x80 - 0xFE
if($j != 0x7F){
echo chr($i).chr($j);
} } }?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved