Преобразование XML UTF-8 в ISO-8859-9 в c # - PullRequest
1 голос
/ 08 июня 2009

у меня есть длинный XML-документ, только что созданный строителем строк с начальным тегом, например <?xml version="1.0" encoding="UTF-8"?> <xxxxxx> .. </xxxxxx> и я хочу преобразовать этот XML в тип кодировки ISO-8859-9. Как я могу это сделать? Или кто-нибудь предложит мне другой способ создания ISO-8859-9 типа кодировки xml в C #.

Ответы [ 3 ]

5 голосов
/ 08 июня 2009

Поскольку кодирование имеет смысл только тогда, когда текст закодирован в поток, я предполагаю, что вы хотите сохранить документ в файл, используя данную кодировку. Таким образом, атрибут encoding будет соответствовать кодировке файла.

Попытка:

using System.IO;
using System.Xml;

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
Stream stream = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.GetEncoding("ISO-8859-9");
XmlWriter writer = XmlWriter.Create(stream, settings);
doc.Save(writer);
3 голосов
/ 08 июня 2009

Я бы предположил, что самым надежным способом было бы загрузить его как документ XML, а затем сохранить его с TextWriter, который имеет кодировку ISO-8859-9. Таким образом, вам не нужно беспокоиться ни о чем специфичном для XML.

Как вы хотите вывод? В строке, файле, байтовом массиве?

0 голосов
/ 08 июня 2009

спасибо за ваш ответ, это действительно полезно для меня. Кроме того, я заметил, что пример кода ниже.

string xml ="our created xml string";

HttpResponse Response = context.Response;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/xls";
Response.Charset = "UTF-8";
Response.ContentEncoding = Encoding.GetEncoding("UTF-8");
Response.AddHeader("content-disposition", "attachment; filename=text.xml" ) ;
Response.Output.Write(xml);

если я просто изменю свойство Charset в Response и ContentEncoding Свойство Ответа, Могу ли я добраться до вашего решения? İ изменит только эти две строки:

Response.Charset = "ISO-8859-9";                                        
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-9");

это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...