2016-08-02 3 views
0

... специально XA3 (& фунт, & # XA3, & # 163)фильтр определенных символов Юникода из XML

я загружаю несколько долго XML документов и периодически, я побегу в тот, который выиграл tt, исключая исключение:

Недопустимый символ в данной кодировке. Строка x, позиция y.

Вот код в вопросе:

var doc = new XmlDocument(); 
doc.Load(file.FullName); 

Когда я смотрю на данный документ на линии указано, я вижу XA3 отформатированный обратно (черный Б.Г., белый фг) в одном из теги XML.

Заголовок каждого файла XML нет ничего примечательного:

<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 

Это может звучать как действительно немой вопрос, но есть ли способ, чтобы либо удалить оскорбительный характер или сказать XMLDocument, который считывает файл принять кодировку символов?

+1

Взгляните на [Исключить недопустимые символы XML в C#] (https://stackoverflow.com/questions/8331119/escape-invalid-xml-characters-in-c-sharp) и [Сегментация XML (de) недействительна строка несовместима в C#?] (https://stackoverflow.com/questions/13450117). При этом '& # xa3' является вполне допустимым символом XML. Можете ли вы дать [mcve], как возникло это исключение? – dbc

ответ

2

Этот ответ основан на предположении, что ваш XML-файл не содержит объект символа &#xa3;, но значение байта 0xa3.

Код UTF-8 для знака фунта - это двухбайтовый код 0xc2 0xa3. Если нет байта 0xc2 до 0xa3, то кодировка вашего XML-файла не является UTF-8, а информация заголовка неверна.

Если это так, вы можете изменить кодировку в заголовке XML на ISO 8859-1 (где знак фунта можно найти в кодовой точке 0xa3) или попытаться выяснить, почему ваши файлы XML не являются UTF -8 закодированы и исправлены. Поскольку я не знаю, содержат ли ваши файлы какие-либо символы, которых нет в ISO 8859-1, я бы предпочел второй вариант.

+0

Спасибо за ответ. Я не знал о двух байтовых последовательностях. Я также попробую изменить кодировку. Xa3 был единственным недопустимым персонажем, поэтому я просто удаляю оскорбительного персонажа. –

Смежные вопросы