程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi for php完全支持中文三部曲

delphi for php完全支持中文三部曲

編輯:Delphi

第一部曲:

  要使用Delphi for PHP的update1版,之前的版本雖然也能達到頁面內容顯示中文的目標,但這不是完全的中文支持。

  有了Delphi for PHP編程軟件後,新增一個form頁面,只要將form的encoding屬性設為GB2312或utf-8,即可實現頁面正常顯示中文。

  第二部曲:

  本論壇及網上其他地方對控件的中文支持有不同描述,本人經過整理,其實現步驟是:1、修改apache2的配置文件,讓其應用utf-8字符集(注意同時修改http.conf和httpd.template.conf文件,以免被delphi for PHP啟動時復原);2、設置Delphi for php,讓其應用utf-8字符集,同時也讓php應用utf-8字符集;3、修改PHP配置文件,讓其應用utf-8字符集(同時修改php.ini和PHP.ini.template文件,原因同上),這部分的設置似乎在第2步已經完成了,當然用另一種方式設置一下也沒關系啦。

  至此,在Delphi for PHP中將form的encoding設為utf-8,即可完全實現控件的中文支持。

  到這一步後,數據庫控件其實在代碼層次已經支持中文了,但由於MySQL數據庫與PHP在字符集一致性等方面的原因,仍會顯示亂碼。

  第三部曲:

  MySQL 4以上的字符集支持(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。對於字符集的支持細化到四個層次: 服務器(server),數據庫(database),數據表(table)和連接(connection)。

  因此需要將MySQL和PHP的默認字符集都設為utf-8,如此設置以後,我們會發現一個問題:用delphi for php生成的php程序提交的中文數據,用phpmyadmin查看是亂碼,但用原提交程序查看卻一切正常;另一方面,用PHPmyadmin輸入的中文數據,用Delphi for php生成的php程序查看是亂碼,但用PHPmyadmin查看卻正常。

  由此我們可以推斷出:數據在傳輸及存儲環節出現了字符集的不一致。

  問題就出在這個connection連接層上!一般情況下,PHP連接MySQL編碼方式,如果沒有顯式的聲明編碼方式,都將使用latin1編碼。一般的程序,都沒有顯式聲明 ,所以,都是將utf8文本按latin1編碼方式存在數據庫,PHPMyAdmin再用utf8格式讀取,肯定是亂碼。如果PHP程序按正確的編碼存入數據庫,肯定是沒有問題的。

  因此需要顯式聲明如下變量:

    SET character_set_clIEnt=’utf8’

    SET character_set_connection=’utf8’

    SET character_set_results=’utf8’

  上述聲明與 SET NAMES ’utf8’等價,如此以來,解決問題的關鍵就變成了如何將 SET NAMES ’utf8’ 放入Delphi for PHP程序並使其有效。

  其實非常簡單,在form中找到數據庫控件,在其OnAfterConnect事件中加入一行:$this->控件名->execute('set names utf8');

  一切OK!

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