2014-09-22 50 views
0

我讀電子郵件印10.6.1.5187和Delphi 7如何避免錯誤的字符閱讀UTF-8封電子郵件,印第安納波利斯10.6和Delphi 7

我只有問題UTF-8編碼的電子郵件,其翻譯成客戶電腦中的錯誤字符。

我已經閱讀了很多關於這個問題的內容,但是我還沒有找到解決方案,除了自己解碼原始郵件。

我想知道當發件人使用UTF-8編碼它們時,是否有辦法獲得正確的電子郵件。

謝謝。

+0

我們需要看到更多細節。爲了提出解決方案,我相信我們首先需要診斷問題。 – 2014-09-22 12:29:15

回答

1

接收到UTF8字符串,就像它是一個Ansi字符串。你必須解碼它。


你必須接收消息文本在UTF8String(又名。AnsiString在Delphi 7又名String),然後從UTF8將它們轉換爲AnsiString或(優選地)01​​。您可以使用UFT8Decode()Utf8ToAnsi()函數來解碼電子郵件正文。

如果您使用UFT8Decode()函數,您仍然需要支持WideString的控件來顯示接收到的消息。

如果使用Utf8ToAnsi()函數,結果可能不包含不屬於用戶本地代碼頁的字符。

所以,你會使用類似:

var 
    ustrEmailBody: UTF8String; 
    wstrDecoded: WideString; 
begin 
    ... 
    // ustrEmailBody now contains the email body 
    wstrDecoded := UTF8Decode(ustrEmailBody); 
    SomeUnicodeAwareMemo.Text := wstrDecoded; 

var 
    ustrEmailBody: UTF8String; 
    astrDecoded: AnsiString; 
begin 
    ... 
    // ustrEmailBody now contains the email body 
    wstrDecoded := UTF8Decode(ustrEmailBody); 
    SomeMemo.Text := astrDecoded; // the memo might display '?' in place of unknown characters 

欲瞭解更多信息,請參閱的UFT8Decode()Utf8ToAnsi()功能的文檔中的德爾福幫助。

+0

在將數據解碼爲UTF-8之前,確保電子郵件的字符集實際上使用UTF-8。並非世界上每個人都使用UTF-8。 – 2014-09-23 00:18:41

+0

@RemyLebeau - 我的回答直接解決了問題中提到的問題。約翰寫道:「我只有UTF-8編碼的電子郵件存在問題,這會在客戶計算機中轉化爲錯誤的字符。」_ – mg30rg 2014-09-23 09:17:48

相關問題