線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2112
推到 Plurk!
推到 Facebook!

CppWebBrowser 與繁簡語編碼的問題

尚未結案
infoman
一般會員


發表:2
回覆:4
積分:1
註冊:2004-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-27 00:30:02 IP:218.163.xxx.xxx 未訂閱
請問用 CppWebBrowser 元件開啟網頁時, 如何讓系統自動選取繁簡體編碼? 也就是不論網頁是繁體編碼或簡體編碼都成正確的開啟顯示. 謝謝!
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-27 03:36:12 IP:219.68.xxx.xxx 未訂閱
轉貼QOO1234大大的文章.. 【發表】取代 class="code"> uses MSHTML_TLB, ActiveX,OleCtrls, SHDocVw_TLB; {$R *.DFM} //編碼處理 procedure TForm1.SetCharSet(Const ACharSet: String); var RefreshLevel: OleVariant; begin try IHTMLDocument2(Form1.WebBrowser1.Document).Set_CharSet(ACharSet); RefreshLevel :=7; Form1.WebBrowser1.Refresh2(RefreshLevel); except end; end; ---------------------------------------------------------- SetCharset('big5'); //編碼-繁體中文 SetCharset('gb2312');//編碼-簡體中文 SetCharset('_autodetect_all'); //自動選取 尼可以修改這裡的程式碼成BCB的CODE..應該就可以解決您的問題... GOOD LUCK
infoman
一般會員


發表:2
回覆:4
積分:1
註冊:2004-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-27 12:04:38 IP:61.221.xxx.xxx 未訂閱
謝謝您的回答. 可是我不知道如何將下面的 Delphi Code 轉成 BCB 的 Code. BCB 裡面好像沒有類似的元件.    
引言: 轉貼QOO1234大大的文章.. 【發表】取代 class="code"> uses MSHTML_TLB, ActiveX,OleCtrls, SHDocVw_TLB; {$R *.DFM} //編碼處理 procedure TForm1.SetCharSet(Const ACharSet: String); var RefreshLevel: OleVariant; begin try IHTMLDocument2(Form1.WebBrowser1.Document).Set_CharSet(ACharSet); RefreshLevel :=7; Form1.WebBrowser1.Refresh2(RefreshLevel); except end; end; ---------------------------------------------------------- SetCharset('big5'); //編碼-繁體中文 SetCharset('gb2312');//編碼-簡體中文 SetCharset('_autodetect_all'); //自動選取 尼可以修改這裡的程式碼成BCB的CODE..應該就可以解決您的問題... GOOD LUCK < face="Verdana, Arial, Helvetica">
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-27 19:30:01 IP:219.68.xxx.xxx 未訂閱
剛剛亂TRY了一下..OleObject的Document..有一個CharSet的屬性 OleObject的Document的一個小缺點就是沒法直接看他有提供哪些屬性.. 所以要從HTML的DOM那邊找..就去看HTML OBJECT的 REFERENCE 果然被我找到了 以下是 > < class="code"> while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; WebBrowser1.OleObject.Document.CharSet:='utf-8'; CharSet:='big5'; //編碼-繁體中文 CharSet:='gb2312';//編碼-簡體中文 CharSet:='_autodetect_all'; //自動選取 我電腦沒冠BCB..不過BCB應該是這樣子寫 < class="code"> while(CppWebBrowser1->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE) { Application->ProcessMessages(); } CppWebBrowser1->OleObject->Document->CharSet='utf-8'; 改變CODEPAGE一定要在整個網頁下載完成後才可以更換..所以上面兩行是必須的 不需要REFRESH..WebBrowser本身會自動重新整理一次..不過我試過了一下.. 假如網頁的原始檔沒有標明CharSet為何 而您又碰巧使用了自動偵測..網頁可能仍然會出現亂碼.. 所以您可能還要多加"當CharSet沒有值時"..預設為繁體中文.. 這樣應該就蠻完美了... 發表人 -
infoman
一般會員


發表:2
回覆:4
積分:1
註冊:2004-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-28 14:21:51 IP:163.23.xxx.xxx 未訂閱
感謝您熱心的幫忙. BCB 的 CppWebBrowser1->OleObject 後面就不能再接上 Property 了. 看起來 BCB 和 Delphi 並沒有一對一的對應. 不知道怎麼瓣才好. <>< face="Verdana, Arial, Helvetica">引言: 剛剛亂TRY了一下..OleObject的Document..有一個CharSet的屬性 OleObject的Document的一個小缺點就是沒法直接看他有提供哪些屬性.. 所以要從HTML的DOM那邊找..就去看HTML OBJECT的 REFERENCE 果然被我找到了 以下是 > < class="code"> while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; WebBrowser1.OleObject.Document.CharSet:='utf-8'; CharSet:='big5'; //編碼-繁體中文 CharSet:='gb2312';//編碼-簡體中文 CharSet:='_autodetect_all'; //自動選取 我電腦沒冠BCB..不過BCB應該是這樣子寫 < class="code"> while(CppWebBrowser1->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE) { Application->ProcessMessages(); } CppWebBrowser1->OleObject->Document->CharSet='utf-8'; 改變CODEPAGE一定要在整個網頁下載完成後才可以更換..所以上面兩行是必須的 不需要REFRESH..WebBrowser本身會自動重新整理一次..不過我試過了一下.. 假如網頁的原始檔沒有標明CharSet為何 而您又碰巧使用了自動偵測..網頁可能仍然會出現亂碼.. 所以您可能還要多加"當CharSet沒有值時"..預設為繁體中文.. 這樣應該就蠻完美了... 發表人 - >< face="Verdana, Arial, Helvetica">< >< >
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-28 14:37:24 IP:219.68.xxx.xxx 未訂閱
infoman您好..您不需要這麼困擾啦 基本上..>>>>> >
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-28 14:39:44 IP:219.68.xxx.xxx 未訂閱
剛剛用GOOGLE幫您找了KEY WORD..您可以看看裡面的連結..看看DOCUMENT都是位於哪一個地方 http://www.google.com.tw/search?num=100&hl=zh-TW&q=CppWebBrowser "->Document"&btnG=搜尋&meta=
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-28 22:18:01 IP:210.58.xxx.xxx 未訂閱
在CppWebBrowser下載完成後指定編碼
    Variant disp;
    disp = CppWebBrowser1->Document;
    disp.OlePropertySet("charset","_autodetect_all"); //自動選取
其中_autodetect_all是自動選取 其他編碼語系請自行修改
infoman
一般會員


發表:2
回覆:4
積分:1
註冊:2004-10-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-29 22:41:09 IP:59.114.xxx.xxx 未訂閱
謝謝兩位大大熱心的回答. 問題已經解決.  > 編碼指式,
系統時間:2024-05-19 8:13:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!