delphi for php 2.0問題 |
尚未結案
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
delphi for php 2.0.0.1041
瀏覽器 IE6 , MAXTHON 資料庫: MSSQL,MYSQL 在中文支援是有問題的 有的元件如 MainMenu...中文用utf-8,不能用big5會亂碼 資料庫元件如dbgrid...中文是亂碼 是否在瀏覽器支援有問題,聽說在firefox較正常 2.0是改善很多問題,可是還是半套產品 |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
MySql用utf8,我參考網路資源,經實際實驗
在function databaseAfterConnect($sender, $params) { $this->database->execute("set names utf8"); } 網頁採utf8,用IE,dbgrid及edit皆可顯示中文並無問題 Ms-sql我還沒試出來...大概也出在資料源字集的問題 整個IDE的成熟、穩定度還不足,表單編輯偶而會掛掉,另外參考文件也欠缺, 只能運用delphi的習慣,看samples去摸索....痛苦... ........................................................................................... delphi for php 中文完全支持方法 (參考下面網頁來源,經delphi php2.0實際測試可行) http://chuangyiji.com/2007/12/05/delphi-for-php-delphi4php-chinese/ 整理一下,以防自己忘記。 最簡單的辦法: 安裝delphiforphp後,把兩個破解補丁覆蓋到安裝目錄裏即可。 1.0.1.415版本全面支持中文。 配置步驟:啟動delphiforphp後: Tools-〉Editor Options-〉勾選Use UTF-8………… 設置PHP-〉Default Charset-〉utf-8 勾選Set thesevalues on php.ini 然後你就可以自由使用輸入顯示中文了。 注意,不要在網站目錄上使用中文命名,據說這樣會使軟體速度變得很慢。 如果要配合mysql資料庫的話:把mysql的編碼改成utf-8就行了。 完整的中文支援方法: 1 要使用delphi for php的update1版,之前的版本雖然也能達到頁面內容顯示中文的目標,但這不是完全的中文支持。 有了delphi forphp編程軟體後,新增一個form頁面,只要將form的encoding屬性設為GB2312或utf-8,即可實現頁面正常顯示中文。 2 本論壇及網上其他地方對控制項的中文支援有不同描述,本人經過整理,其實現步驟是: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 forphp中將form的encoding設為utf-8,即可完全實現控制項的中文支援。 到這一步後,資料庫控制項其實在代碼層次已經支援中文了,但由於mysql資料庫與php在字元集一致性等方面的原因,仍會顯示亂碼。 httpd.conf(C:\Program Files\CodeGear\Delphifor PHP\2.0\apache2\conf) adddefaultcharset off php.ini(C:\Program Files\CodeGear\Delphifor PHP\2.0\php) 3 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' 上述聲明與 SETNAMES 'utf8'等價,如此以來,解決問題的關鍵就變成了如何將 SET NAMES 'utf8' 放入delphi for php程式並使其有效。 其實非常簡單,在form中找到資料庫控制項,在其OnAfterConnect事件中加入一行:$this->控制項名->->execute('set namesutf8');
編輯記錄
pedro 重新編輯於 2008-05-31 21:30:25, 註解 無‧
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
delphi for php
兩個基本問題 1.有些元件只能用utf-8不能用big5碼,如MainMenu,bitbtn,speedbutton,dbgrid.......,不管在options如何設定都沒用 在台灣很多人都是用big5碼,也有人說瀏覽器的問題如ie6,要用ie7,這錯誤說法,是delphi for php要去適應瀏覽器, 不是瀏覽器適應delphi for php 2.使用mssql中文是亂碼,有人說用mysql可以啊,又是說錯誤說法,那其他現存的資料庫很多都是mssql,要排除不用嗎 希望有人可以解答 1.使用各種元件在big5碼顯示中文正常 2.支援所有資料庫可以正常顯示中文(big5,utf-8) |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |