У меня есть файл XML следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student name="Adnand"/>
<student name="özil"/>
<student name="ärnold"/>
</students>
Как видите, у меня UTF-8 кодировка, но я использовал некоторые символы, отличные от UTF-8 (ö, ä).
Я использую следующий код для десериализации этого XML:
public void readXML(string path)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Students));
TextReader reader = new StreamReader(path);
object obj = deserializer.Deserialize(reader);
Students myStudents = (Students)obj;
}
Процесс десериализации в порядке, но специальные символы отображаются как символ �. Я пытался изменить тип кодировки, но ничего. Может ли кто-нибудь помочь мне, какие альтернативы у меня есть?
ОТВЕТ Вы должны указать Encoding.Default, например
public void readXML(string path)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Students));
TextReader reader = new StreamReader(path, Encoding.Default);
object obj = deserializer.Deserialize(reader);
Students myStudents = (Students)obj;
}
TextReader reader = new StreamReader(path, Encoding.UTF8);
сработает? - person Freggar   schedule 16.05.2018Encoding.Default
? возможно, ваш файл действительно не закодирован как UTF-8 - person Freggar   schedule 16.05.2018ö, ä
являются символами UTF8. Эта страница является страницей UTF8, поэтому вы можете видеть эти символы в первую очередь. Ваш фактический файл file хранится как файл UTF8, или это файл ANSI, который просто имеет текстUTF-8
в атрибуте кодирования? - person Panagiotis Kanavos   schedule 16.05.2018