Объяснение:Как удалить недопустимые символы из кодированного файла UTF-8?
Я пришел по ребру случае при написании моего веб-приложения. Я принимаю файлы UTF-8, которые нужно загрузить, и у меня есть чек, чтобы подтвердить, что кодировка UTF-8 (или, по крайней мере, самая лучшая проверка, возможно, нет серебряной пули, я знаю, что есть много другие вопросы о переполнении стека для этой конкретной проблемы).
В качестве теста я взял ANSI-кодированный файл и преобразовал его в UTF-8 обоими (в отдельных тестах), преобразуя его в UTF-8 в Notepad ++, а также просто расшифровывая как UTF-8 (хотя это ANSI) на лету в C#, используя Encoding.UTF.GetBytes(inputStream)
.
Где Проблема Напрашивается:
Позже, я помещаю исходные данные файла в качестве одного из элементов в файле XML. Здесь возникает проблема. Похоже, что символ сохраняется из файла ANSI, который (я полагаю) недействителен в UTF-8. Когда я пытаюсь загрузить XML с помощью следующей команды ...
XDocument xmlSample = XDocument.Load(outputPath);
Я получаю это исключение ...
{"Invalid character in the given encoding. Line 10, position 14."}
Что выглядит в Visual Studio ...
И вот это в Блокноте ++ ...
Ниже копия характер и вставили.
От АЭС: ¡
Из Visual Studio Струнный просмотра: �
Вопрос:
Как удалить недопустимые символы из UTF-8 кодировке, или, по крайней мере, обнаружить их в здравом образом так Я могу отклонить файл?
Скопируйте и вставьте персонажа в вопрос, он может дать некоторые подсказки. – Quantic
XmlReader.Create (строка, настройки) вы можете добавить параметр параметров, чтобы игнорировать проверку символов. Это не всегда работает, но может быть в вашем случае. Символ температуры не является незаконным в xml, просто для реализации Microsoft требуется специальная обработка этих символов. – jdweng
Я копирую и вставляю персонажа. –