Ошибка чтения XML с UTF-16 в заголовке
У меня есть программа, которая читает xml-файл. Файл дан мне, я его не создаю.
Я использую
using (XmlTextReader reader = new XmlTextReader(Filename)) { while (reader.Read())
и он прекрасно работает, если только xml-файл не имеет
кодировка= " utf-16"
в этом. В таком случае я получаю
Необработанное исключение типа 'System.В формате XML.Xmlexception В' произошел в System.Xml.dll
Дополнительная информация: нет знака порядка байтов в Юникоде. Не удается переключиться на Юникод.
изменение xml-файла на utf-8 работает, но я не хочу каждый раз редактировать этот файл. Есть ли способ исправить это в коде читателя?
полный XML-файл
<?xml version="1.0" encoding="utf-16"?> <LapSyncData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <DriverData> <Driver position="1" name="Bob Smith (1)" carNum="4" laps="4" lapTime="13.88" elapsedTime="55.52" pace="50.00" fastLap="10.83" fastLapOn="3" avgLap="12.50" done="True" DriverID="8b8f1514-75d6-4aaf-b537-fe005d3b16b4" /> </DriverData> <RaceData> <Race Version="0.1" className="4S" classID="4ab689ac-67e2-4cdb-bf9a-a0109b8bc7e8" raceStatus="complete" raceLength="4" timeElapsed="58" timeRemaining="0" raceNumber="1" totalRaces="5" round="1" /> </RaceData> </LapSyncData>
Что я уже пробовал:
Я попробовал использовать (XmlTextReader reader = new XmlTextReader(Filename, Encoding.GetEncoding ("UTF-8"))) но если это сработает, то я не смогу понять синтаксис.
Kenneth Haugland
Возможно:
http://stackoverflow.com/questions/4520184/how-to-detect-the-character-encoding-of-a-text-file
0x01AA
XML-файл не содержит ByteOrderMark (BOM). Для проверки откройте файл с помощью блокнота и сохраните его как Unicode. Блокнот вставит спецификацию в начало файла.