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

以Indy8發信,Outlook express收信,標題及內容是亂碼...

尚未結案
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-18 15:52:50 IP:210.202.xxx.xxx 未訂閱
大家好,請教各位先進,因為我信件的內容是以UTF-8來編碼的,可是在以Outlook看信時卻會以Big5來解碼,目前每次都要以檢視/編碼來改變編碼方式才看的到中文,那我該如何設定才會讓Outlook express自動以UTF-8來解碼呢?我目前的設定是: this->IdMessage1->ContentType = "text/html; charset='UTF-8'"; this->IdMessage1->CharSet = "UTF-8"; this->IdMessage1->ContentTransferEncoding = "CODE64";
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-19 23:33:14 IP:61.221.xxx.xxx 未訂閱
引言: 大家好,請教各位先進,因為我信件的內容是以UTF-8來編碼的,可是在以Outlook看信時卻會以Big5來解碼,目前每次都要以檢視/編碼來改變編碼方式才看的到中文,那我該如何設定才會讓Outlook express自動以UTF-8來解碼呢?我目前的設定是: this->IdMessage1->ContentType = "text/html; charset='UTF-8'"; this->IdMessage1->CharSet = "UTF-8"; this->IdMessage1->ContentTransferEncoding = "CODE64";
carny 你好: 請問~~你其他的程式碼方便一起貼上來嗎??< > 我想嘗試看看...< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-21 09:32:03 IP:210.202.xxx.xxx 未訂閱
RaynorPao你好: 先謝謝你的幫忙,其實我就只是使用Indy來單純的發信而已,但是信件的內容是用我們公司同事所開發的一個元件,由資料庫中取出並轉換成UTF-8的格式,目的在於可以支援多國語言的內容,所以關於如何取得UTF-8文字的方法我這邊就無法提供了,以下是我的程式:         this->IdSMTP1->Host = mailServer;     this->IdMessage1->From->Text = mailSender;     this->IdMessage1->From->Name = "Carny";     this->IdMessage1->ContentType = "text/html; charset='UTF-8'";     this->IdMessage1->CharSet = "UTF-8";     this->IdMessage1->ContentTransferEncoding = "CODE64";        try {       this->IdSMTP1->Connect();     }     catch(...){       this->StatusBar1->Panels->Items[2]->Text = " Mail Server can not be Connected";       return;     }        TDateTime time = TDateTime::CurrentTime();     AnsiString sql;     // mark sending mail     sql = "UPDATE mail SET send_mail = '1' WHERE send_mail LIKE '0'";     this->workflowDataModule->ExecuteSQL(sql);        // select sending mail     sql = "SELECT * FROM mail WHERE send_mail LIKE '1'";     WebDBResultSet* resultSet = this->workflowDataModule->ExecuteQuery(sql);     int count = 0;     while(resultSet->Next()){         AnsiString receiver = resultSet->GetString("receiver_mail");         AnsiString body = resultSet->GetString("body_mail");         AnsiString title = resultSet->GetString("desc_mail");         this->IdMessage1->ClearBody();         this->IdMessage1->Body->Add(WorkflowUtility::ReplaceChar(body,"\n", "
")); this->IdMessage1->Recipients->EMailAddresses = receiver; this->IdMessage1->Subject = title; try{ this->IdMessage1->IsEncoded = false; this->IdSMTP1->Send(this->IdMessage1); } catch(Exception& e){ this->StatusBar1->Panels->Items[2]->Text = e.Message " Mail sent fail."; return; } count ; } this->IdSMTP1->Disconnect(); // delete sending mail sql = "DELETE FROM mail WHERE send_mail LIKE '1'"; this->workflowDataModule->ExecuteSQL(sql); delete resultSet; 再次謝謝你願意幫忙 ><~~~(痛哭流涕中)
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-21 12:21:32 IP:203.73.xxx.xxx 未訂閱
引言: 先謝謝你的幫忙,其實我就只是使用Indy來單純的發信而已,但是信件的內容是用我們公司同事所開發的一個元件,由資料庫中取出並轉換成UTF-8的格式,目的在於可以支援多國語言的內容,所以關於如何取得UTF-8文字的方法我這邊就無法提供了
carny 你好: 我用以下的程式碼做測試 ( class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { IdSMTP1->Host="MyHostName"; IdSMTP1->Port=25; IdSMTP1->Username="MyName"; IdSMTP1->Password="MyPassword"; IdMessage1->From->Text="MyEmail"; IdMessage1->From->Name="MyName"; IdMessage1->ContentType="text/html; charset='UTF-8'"; IdMessage1->CharSet="US-ASCII"; // IdMessage1->CharSet="UTF-8"; IdMessage1->ContentTransferEncoding="CODE64"; try { IdSMTP1->Connect(); } catch(...) { ShowMessage("Connect failed"); return; } AnsiString receiver="MyEmail"; AnsiString body="測試測試測試測試測試測試"; AnsiString title="測試測試測試測試測試測試"; IdMessage1->ClearBody(); IdMessage1->Body->Add(body); IdMessage1->Recipients->EMailAddresses=receiver; IdMessage1->Subject=title; try { IdMessage1->IsEncoded=false; IdSMTP1->Send(IdMessage1); } catch(Exception& e) { ShowMessage("Sent failed"); return; } IdSMTP1->Disconnect(); ShowMessage("Sent succeeded"); } 備註: (1)我是用 Indy v9.00.11 做測試的 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-21 15:15:03 IP:210.202.xxx.xxx 未訂閱
RaynorPao你好: 謝謝你做的測試,可是在我的環境下測的時候,連outlook都是亂碼@@,可能是因為你所發出的內容其實還是Big5的編碼(因為是直接打上去的)。真的謝謝你的測試,謝謝~希望這個問題真的有解@@ BTW,不知道Indy9.00.11要怎麼裝到BCB5勒??在Indy的網站上只看到原始碼的下載而已,那要怎麼裝呢? 發表人 - carny 於 2003/02/21 15:22:59
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-21 15:24:51 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 謝謝你做的測試,可是在我的環境下測的時候,連outlook都是亂碼@@,可能是因為你所發出的內容其實還是Big5的編碼(因為是直接打上去的)。真的謝謝你的測試,謝謝~希望這個問題真的有解@@
carny 你好: 我有一個想法~~如果你願意的話,先試試看 就是先把文字由 > 備註: 有關 >
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-24 09:45:31 IP:210.202.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- carny 你好: 我有一個想法~~如果你願意的話,先試試看 就是先把文字由 UTF-8(Unicode) 轉成 ANSI 然後再把 Mail 發出去,看看這樣行不行?? -------------------------------------------------------------------------------- RaynorPao你好: 謝謝你的建議,我有試著把他轉成ANSI了,但是收到的信還是亂碼@@,而且在Outlook express中改變編碼成UTF-8後,也無法正確看到中文了
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-24 11:45:08 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 謝謝你的建議,我有試著把他轉成ANSI了,但是收到的信還是亂碼@@,而且在Outlook express中改變編碼成UTF-8後,也無法正確看到中文了
carny 你好: 請問你是怎麼轉的呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-24 13:08:48 IP:210.202.xxx.xxx 未訂閱
引言:carny 你好: 請問你是怎麼轉的呢??
RaynorPao你好: 我是用AnsiString的WideChar 來轉的 下面是我的Code: AnsiString title = resultSet->GetString("desc_mail"); int iWCBuf=title.WideCharBufSize(); wchar_t wsz[512]={0}; title.WideChar(wsz, iWCBuf); title = AnsiString(wsz); this->IdMessage1->Subject = title;
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-28 08:51:08 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 我是用AnsiString的WideChar 來轉的 下面是我的Code: AnsiString title = resultSet->GetString("desc_mail"); int iWCBuf=title.WideCharBufSize(); wchar_t wsz[512]={0}; title.WideChar(wsz, iWCBuf); title = AnsiString(wsz); this->IdMessage1->Subject = title;
carny 你好: 你方便把你的 UTF-8 的中文字(取一行就好) 先儲存成一個檔案,然後放到網頁上來,我再試試看 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-04 13:05:16 IP:210.202.xxx.xxx 未訂閱
引言: carny 你好: 你方便把你的 UTF-8 的中文字(取一行就好) 先儲存成一個檔案,然後放到網頁上來,我再試試看
RaynorPao你好: 不好意思這麼久才回覆,其實你如果有UltraEdit9.0的話,是可以用他來轉一般的文字檔成為UTF-8的格式,方法為 File / Conversion / ANSI to UTF-8;另外Windows2000的筆記本(NotePad)也可以轉,只要另存新檔時在編碼選UTF-8即可。因為我不知道怎麼把檔案上傳到這個站,也沒有外面的免費網頁的位置,所以你如果還需要我做出來的UTF-8的檔案的話,你可以把你的e-mail告訴我,我再寄過去給你,真的謝謝你的幫忙。 對了,之前我有去追過 >
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-04 13:19:34 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 不好意思這麼久才回覆,其實你如果有UltraEdit9.0的話,是可以用他來轉一般的文字檔成為UTF-8的格式,方法為 File / Conversion / ANSI to UTF-8;另外Windows2000的筆記本(NotePad)也可以轉,只要另存新檔時在編碼選UTF-8即可。因為我不知道怎麼把檔案上傳到這個站,也沒有外面的免費網頁的位置,所以你如果還需要我做出來的UTF-8的檔案的話,你可以把你的e-mail告訴我,我再寄過去給你,真的謝謝你的幫忙。 對了,之前我有去追過 > < face="Verdana, Arial, Helvetica">
carny 你好:
(1)如果安裝 Indy v9.00.11 會發生問題的話,請先參考以下連結文章
   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25182
(2)如何將檔案上傳到網站來?? 請參考以下連結文章
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
carny
一般會員


發表:2
回覆:6
積分:1
註冊:2002-09-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-04 13:35:38 IP:210.202.xxx.xxx 未訂閱
RaynorPao你好: 我已經上傳了一個以UTF-8扁碼的檔案上來了,就在: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26695 謝謝你的幫忙
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-07 09:26:08 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 我已經上傳了一個以UTF-8扁碼的檔案上來了,就在: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26695 謝謝你的幫忙 < face="Verdana, Arial, Helvetica"> carny 你好: 以下是 UTF8 轉 BIG5 的範例程式碼(參考看看) 不過~~我發現日文的部分轉不出來~~ < class="code"> TMemoryStream *msUTF8=new TMemoryStream; msUTF8->LoadFromFile("UTF_8_File.txt"); char szUTF8[1024]; wchar_t wszUNICODE[1024]; char szBIG5[1024]; msUTF8->Position=0; msUTF8->Read(szUTF8, msUTF8->Size); MultiByteToWideChar(CP_UTF8, 0, szUTF8, -1, wszUNICODE, 1024); WideCharToMultiByte(CP_ACP, 0, wszUNICODE, -1, szBIG5, 1024, NULL, NULL); TMemoryStream *msBIG5=new TMemoryStream; msBIG5->Size=strlen(szBIG5); msBIG5->Write(szBIG5, msBIG5->Size); msBIG5->SaveToFile("BIG_5_File.txt"); delete msBIG5; delete msUTF8; -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-05-05 12:11:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!