При написании веб-приложения я столкнулся с крайним случаем. Я принимаю файлы 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."}
И вот так в Notepad++...

Ниже — это копирование и вставка символов.
Из NPP: ¡ Из средства просмотра строк Visual Studio: �
Вопрос:
Как удалить недопустимые символы из файла в кодировке UTF-8 или хотя бы обнаружить их в файле разумный способ, чтобы я мог отклонить файл?
Подробнее здесь: https://stackoverflow.com/questions/409 ... coded-file
Мобильная версия