У меня есть 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;
}