2008-09-17 108 views
2

我有xml,其中一些元素值是unicode字符。有沒有可能用ANSI編碼來表示這個?非Unicode Unicode表示

E.g.

<?xml version="1.0" encoding="utf-8"?> 
<xml> 
<value>受</value> 
</xml> 

<?xml version="1.0" encoding="Windows-1252"?> 
<xml> 
<value>&#27544;</value> 
</xml> 

我反序列化XML,然後嘗試使用XmlTextWriter的指定默認編碼序列化它(默認爲Windows-1252)。所有的unicode字符最終都會成爲問號。我使用VS 2008,C#3.5

回答

5

好吧,我用下面的代碼進行了測試:

string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><xml><value>受</value></xml>"; 

XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.Default }; 
MemoryStream ms = new MemoryStream(); 
using (XmlWriter writer = XmlTextWriter.Create(ms, settings)) 
     XElement.Parse(xml).WriteTo(writer); 

string value = Encoding.Default.GetString(ms.ToArray()); 

它正確轉義Unicode字符這樣的:

<?xml version="1.0" encoding="Windows-1252"?><xml><value>&#x53D7;</value></xml> 

我必須做一些錯誤的其他地方。謝謝您的幫助。

4

如果我理解這個問題,那麼是的。你只需要一個後;27544

<?xml version="1.0" encoding="Windows-1252"?> 
<xml> 
<value>&#27544;</value> 
</xml> 

或者,你想知道如何編程生成此XML?如果是這樣,你在用什麼語言/環境?

+0

是我的錯字。更正了這個例子。 – 2008-09-17 11:15:14