我試圖設置一個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"?>
我也試過UTF8
和Unicode
編碼,但這並不能幫助也沒有。身體仍然無法顯示變音。
有什麼特別的,我不得不注意或者我只是使用錯誤的編碼?
編輯:這是一個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
是我爲自己創建的類。
你把一個斷點msg.Body分配之後並驗證它正確顯示這些字符在這一點?我的猜測是,由於編碼錯誤,在讀取XML時它已經損壞。例如我試着用* File.ReadAllText(Server.MapPath(「〜/ XMLFile1.xml」))*讀取一個示例文件,但只在我指定編碼後才起作用:* File.ReadAllText(Server.MapPath(「〜/ XMLFile1 .xml「),Encoding.GetEncoding(」iso-8859-1「))* –
那麼,正如你所期望的那樣,主體字符串是錯誤的。它只是放一些符號而不是變音符號。我使用'XmlSerializer'來獲取xml數據。我會將其添加到我的問題。 – Roman