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

IdHTTP Get XML網頁亂碼

缺席
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-24 15:50:32 IP:61.230.xxx.xxx 訂閱
透過IdHTTP去get一個url...url是xml檔,encode是UTF-8
當我要去Memo1顯示內容是,有時候中文就變成亂碼,但又有時候是正常中文字...
不知道這是哪出問題? code在下面請參考,謝謝~~

我是 BCB 2009

[code cpp]
TIdHTTP *myhttp = new TIdHTTP(this);
myhttp->CookieManager = IdCookieManager1;
myhttp->ConnectTimeout = 30000;
myhttp->HandleRedirects=true;
myhttp->MaxAuthRetries=3;
myhttp->RedirectMaximum=15;
myhttp->AllowCookies=true;
myhttp->ReadTimeout=30000;
myhttp->Request->Accept="text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8";
myhttp->Request->BasicAuthentication=false;
myhttp->Request->ContentLength=-1;
myhttp->Request->UserAgent="Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)";

try
{
xmlContent = myhttp->Get(url);
Memo1->Lines->Add(xmlContent); //這裡偶爾亂碼
}
catch(Exception &ex)
{
Memo1->Lines->Add(ex.Message);
}

[/code]
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-24 15:57:39 IP:118.169.xxx.xxx 訂閱
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-24 16:09:54 IP:61.230.xxx.xxx 訂閱
這篇我有看過,可是他是post出去,但我只是單純從plurk.com去抓取user的xml...

時有時無的亂碼現象很難debug...

===================引 用 taishyang 文 章===================
類似的討論,看看有沒有幫助
亂碼問題
http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=77455
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-07-24 17:12:14 IP:203.75.xxx.xxx 未訂閱
myhttp->Request->UserAgent設為預設值的話(印象中是Mozilla/4.0,這版本不論是indy9還是10都一樣)
應該就不會有亂碼問題了。

===================引 用 show 文 章===================
透過IdHTTP去get一個url...url是xml檔,encode是UTF-8
當我要去Memo1顯示內容是,有時候中文就變成亂碼,但又有時候是正常中文字...
不知道這是哪出問題? code在下面請參考,謝謝~~

我是 BCB 2009

[code cpp]
TIdHTTP *myhttp = new TIdHTTP(this);
myhttp->CookieManager = IdCookieManager1;
myhttp->ConnectTimeout = 30000;
myhttp->HandleRedirects=true;
myhttp->MaxAuthRetries=3;
myhttp->RedirectMaximum=15;
myhttp->AllowCookies=true;
myhttp->ReadTimeout=30000;
myhttp->Request->Accept="text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8";
myhttp->Request->BasicAuthentication=false;
myhttp->Request->ContentLength=-1;
myhttp->Request->UserAgent="Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)";

try
{
xmlContent = myhttp->Get(url);
Memo1->Lines->Add(xmlContent); //這裡偶爾亂碼
}
catch(Exception &ex)
{
Memo1->Lines->Add(ex.Message);
}

[/code]
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-07-24 17:45:59 IP:61.230.xxx.xxx 訂閱

預設值是Mozilla/3.0 (compatible; Indy Library)

把下面這些更改...但一樣會亂碼...時有時無~

[code cpp]
myhttp->Request->UserAgent="Mozilla/3.0 (compatible; Indy Library)";
myhttp->Request->AcceptLanguage = "zh-tw,en-us";
myhttp->Request->AcceptCharSet = "Big5,utf-8";
myhttp->Request->AcceptEncoding = "gzip,deflate";

[/code]

===================引 用 GrandRURU 文 章===================
myhttp->Request->UserAgent設為預設值的話(印象中是Mozilla/4.0,這版本不論是indy9還是10都一樣)
應該就不會有亂碼問題了。

===================引 用 show 文 章===================
透過IdHTTP去get一個url...url是xml檔,encode是UTF-8
當我要去Memo1顯示內容是,有時候中文就變成亂碼,但又有時候是正常中文字...
不知道這是哪出問題? code在下面請參考,謝謝~~

我是 BCB 2009

[code cpp]
TIdHTTP *myhttp = new TIdHTTP(this);
myhttp->CookieManager = IdCookieManager1;
myhttp->ConnectTimeout = 30000;
myhttp->HandleRedirects=true;
myhttp->MaxAuthRetries=3;
myhttp->RedirectMaximum=15;
myhttp->AllowCookies=true;
myhttp->ReadTimeout=30000;
myhttp->Request->Accept="text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8";
myhttp->Request->BasicAuthentication=false;
myhttp->Request->ContentLength=-1;
myhttp->Request->UserAgent="Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)";

try
{
xmlContent = myhttp->Get(url);
Memo1->Lines->Add(xmlContent); //這裡偶爾亂碼
}
catch(Exception &ex)
{
Memo1->Lines->Add(ex.Message);
}

[/code]
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-24 18:17:48 IP:61.230.xxx.xxx 訂閱
亂碼長這樣
說 早安測試efdsfsd

上面內容是"早安測試efdsfsd"
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-27 19:47:22 IP:61.230.xxx.xxx 訂閱
自問自答...

我最後用TMemoryStream去接IdHTTP的get...用起來就沒有亂碼問題
mybanksoft
初階會員


發表:8
回覆:37
積分:29
註冊:2007-12-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-08-04 20:32:05 IP:118.231.xxx.xxx 訂閱
  1. 在delphi 2009所附的indy是10.2.5版,我將他換成indy 10.5.5版後就沒有亂碼的問題。
  2. 但是indy 的idmessage的主旨,顯示不出unicode,而內容(unicode的字體預設是細明體)及附加檔案都是ok的
  3. 程式及元件任何字型都不用設定,只要用預設即可,因為delphi 2009是真正的unocode
  4. 建議用svn升級,這樣的話随身可以更新,最新的版本(亂碼是因為indy尚未完全跟上delphi 2009或 C 2009的關係。
------
努力學習Rave
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-08-06 16:38:04 IP:61.230.xxx.xxx 訂閱
我之前也有更新到最新版indy...但我會用到IdAntiFreeze...BCB 2009好像不能用...
所以我就沒更新上去~也沒測試了~
mybanksoft
初階會員


發表:8
回覆:37
積分:29
註冊:2007-12-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-08-06 23:05:58 IP:118.231.xxx.xxx 訂閱
您用的元件或方法,我沒有用過,所以無法表示意見。
您確定是indy 10.5.5版嗎?因為據說,indy常常更新版本,每次解決一些已發現的問題就會發佈新版,所以常常更新,以確保取得品質較好的軟體。
------
努力學習Rave
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-08-06 23:10:19 IP:61.217.xxx.xxx 訂閱
我確認是新版的~安裝成功後有看版本~~也在google看到有人遇到跟我一樣問題,只是目前無解....

可能BCB相對delphi來說...要裝一些軟體通常會遇到多一點問題吧...
jasper_dale
初階會員


發表:2
回覆:48
積分:35
註冊:2005-09-19

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-09-22 16:29:11 IP:220.130.xxx.xxx 訂閱
請問可以提供參考嗎?
我現在也遇到一樣的問題!

感謝!!

===================引 用 show 文 章===================
自問自答...

我最後用TMemoryStream去接IdHTTP的get...用起來就沒有亂碼問題
------
{"name":{["賈氏柏"]}}
系統時間:2024-07-07 21:52:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!