2014-01-08 1 views
8

У меня есть класс, правильно определенный и после сериализации его в XML Я не получаю никакой кодировки.Укажите кодировку XmlSerializer

Как определить кодировку «ISO-8859-1»?

Вот пример кода

var xml = new XmlSerializer(typeof(Transacao)); 
var file = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml"),FileMode.OpenOrCreate);    
xml.Serialize(file, transacao);    
file.Close(); 

Вот начало XML генерируется

<?xml version="1.0"?> 
<requisicao-transacao xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <dados-ec> 
    <numero>1048664497</numero> 
+1

Возможно дубликат: http://stackoverflow.com/questions/4928323/xml-serialization-encoding Я не уверен в кодировке 8859-1, хотя –

ответ

16

Следующая должно работать:

var xml = new XmlSerializer(typeof(Transacao)); 

var fname = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml"); 
var appendMode = false; 
var encoding = Encoding.GetEncoding("ISO-8859-1"); 

using(StreamWriter sw = new StreamWriter(fname, appendMode, encoding)) 
{ 
    xml.Serialize(sw, transacao); 
} 

Если вы не возражаете, я спрашиваю, зачем вам нужно кодирование ISO-8859-1? Вероятно, вы можете использовать UTF-8 или UTF-16 (они более узнаваемы) и уйти от него.

+0

Скорее всего, он нуждается в ней из-за некоторых бразильских цифровых налоговых обязательств. – JwJosefy

0

Создать StreamWriter с желаемой кодировки:

System.Text.Encoding code = *WhateverYouWant* 
StreamWriter sw = new StreamWriter(file, code);