Есть ли стандартная литеральная константа, которую я могу использовать вместо «utf-8» в C # (.Net 3.5)? - PullRequest
5 голосов
/ 11 мая 2010

Я хотел бы найти лучший способ сделать это:

XmlNode nodeXML = xmlDoc.AppendChild(
    xmlDoc.CreateXmlDeclaration( "1.0", "utf-8", String.Empty) );

Я не хочу думать о «utf-8» против «UTF-8» против «UTF8» против «utf8», когда я набираю код. Я хотел бы сделать мой код менее подверженным опечаткам. Я уверен, что некоторая стандартная библиотека объявила "utf-8" как строку const / readonly. Как я могу найти это? Кроме того, как насчет "1.0"? Я предполагаю, что основные версии XML также были где-то перечислены.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 11 мая 2010

Попробуйте Encoding.UTF8.WebName.

2 голосов
/ 11 мая 2010

Этого легко избежать, используя XmlWriter для написания документа. Средство записи по умолчанию автоматически кодирует в utf8 и генерирует инструкцию обработки:

var doc = new XmlDocument();
doc.InnerXml = "<root></root>";
using (var wrt = XmlWriter.Create(@"c:\temp\test.xml")) {
    doc.WriteTo(wrt);
}

Выход:

<?xml version="1.0" encoding="utf-8"?><root></root>
2 голосов
/ 11 мая 2010

Вы можете использовать Encoding.UTF8 из System.Text .

...