CppWebBrowser 與繁簡語編碼的問題 |
尚未結案
|
infoman
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-27 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
轉貼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 發送簡訊給我 |
謝謝您的回答.
可是我不知道如何將下面的 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 發送簡訊給我 |
剛剛亂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 發送簡訊給我 |
感謝您熱心的幫忙.
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 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
|
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
|
infoman
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |