全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5765
推到 Plurk!
推到 Facebook!

delphi for php 2.0問題

尚未結案
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-31 20:00:25 IP:210.64.xxx.xxx 訂閱
delphi for php 2.0.0.1041
瀏覽器 IE6 , MAXTHON
資料庫: MSSQL,MYSQL
在中文支援是有問題的
有的元件如 MainMenu...中文用utf-8,不能用big5會亂碼
資料庫元件如dbgrid...中文是亂碼
是否在瀏覽器支援有問題,聽說在firefox較正常
2.0是改善很多問題,可是還是半套產品
編輯記錄
cmj 重新編輯於 2008-05-31 20:00:58, 註解 無‧
cmj 重新編輯於 2008-05-31 20:01:54, 註解 無‧
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-31 21:27:06 IP:61.217.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-05 10:13:19 IP:118.167.xxx.xxx 訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-06-24 13:50:00 IP:60.248.xxx.xxx 未訂閱
沒人回應?
沒人使用?

ms-sql用big5,網頁編碼也用big5,一些元件顯示中文沒問題
系統時間:2024-04-20 18:49:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!