Вывод DataTable XML в UTF8, а не в UTF16 - PullRequest
4 голосов
/ 13 августа 2010

У меня есть DataTable, в котором я создаю XML-файл с использованием .WriteXML (..), хотя у меня есть проблема с его экспортом в кодировке UTF-16, и, похоже, нет очевидного способа изменить это.Я понимаю, что .NET использует UTF-16 внутри строк, верно ли это?

Затем я запускаю XML, который DataTable.WriteXML () создает через XSLT, который включает в объявление вывода следующее:

<xsl:output method="xml" indent="yes" encoding="utf-8" />

Но, тем не менее, результат преобразования находится в UTF16, и система, в которую я пытаюсь ввести этот XML-файл, не поддерживает UTF16.

Есть ли способ форсироватьвыход на UTF-8?

1 Ответ

1 голос
/ 13 августа 2010

Кодировка результирующего документа определяется атрибутом encoding инструкции <xsl:output> , а не объявлением XML документа XML, содержащего преобразование XSLT.

Вот пример:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output encoding="utf-8"/>

 <xsl:template match="/">
   <t>Hello, world!</t>
 </xsl:template>
</xsl:stylesheet>

при применении к любому документу XML (не используется в этом простом демонстрационном примере), требуемый результат получается :

<?xml version="1.0" encoding="utf-8"?><t>Hello, world!</t>

Примечание. : в .NET может потребоваться указать конкретные параметры XmlWriter, передаваемые в качестве параметра методу XslCompiledTransform.Transform(). См. this для получения подробной информации о том, как указать требуемую кодировку в классе XmlWriterSettings.

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