2015-09-28 33 views
0

我試圖設置一個MailMessage身體的編碼,以便它能夠顯示德語「變音符號」(ä,ö, ü)。我從XML文件中獲取消息文本。 xml的編碼是iso-8859-1,也是MailMessage正文。設置System.Net.Mail.MailMessage正文的編碼,同時使用c#從xml獲取文本

MailMessage msg = new MailMessage(); 
msg.From = new MailAddress(sFrom); 
msg.To.Add(sTo); 
msg.Subject = sSubject; 
msg.Body = sBody; 
msg.IsBodyHtml = true; 
msg.BodyEncoding = Encoding.GetEncoding("iso-8859-1"); 

XML的第一行是這樣的:

<?xml version="1.0" encoding="iso-8859-1"?> 

我也試過UTF8Unicode編碼,但這並不能幫助也沒有。身體仍然無法顯示變音。

有什麼特別的,我不得不注意或者我只是使用錯誤的編碼?

編輯:這是一個Windows窗體應用程序,我使用.NET Framework 4.5.2

EDIT2:我使用XmlSerializer獲取XML數據。

XmlSerializer xSerializer = new XmlSerializer(typeof(App)); 

using (StreamReader srXml = new StreamReader(_sFileName)) 
{ 
    _oAppConfig = (App)xSerializer.Deserialize(srXml); 
} 

請注意,App是我爲自己創建的類。

+0

你把一個斷點msg.Body分配之後並驗證它正確顯示這些字符在這一點?我的猜測是,由於編碼錯誤,在讀取XML時它已經損壞。例如我試着用* File.ReadAllText(Server.MapPath(「〜/ XMLFile1.xml」))*讀取一個示例文件,但只在我指定編碼後才起作用:* File.ReadAllText(Server.MapPath(「〜/ XMLFile1 .xml「),Encoding.GetEncoding(」iso-8859-1「))* –

+0

那麼,正如你所期望的那樣,主體字符串是錯誤的。它只是放一些符號而不是變音符號。我使用'XmlSerializer'來獲取xml數據。我會將其添加到我的問題。 – Roman

回答

1

嘗試指定的編碼讀取文件如:

XmlSerializer xSerializer = new XmlSerializer(typeof(App)); 

using (StreamReader srXml = new StreamReader(_sFileName, Encoding.GetEncoding("iso-8859-1"))) 
{ 
    _oAppConfig = (App)xSerializer.Deserialize(srXml); 
} 
+0

作品像一個魅力,謝謝:) – Roman

+1

@羅曼:沒問題,很高興它的工作 –