В нашем приложении мы получаем текстовые файлы (.txt
, .csv
и т. Д.) Из разных источников. При чтении эти файлы иногда содержат мусор, поскольку файлы были созданы в другой / неизвестной кодовой странице.
Есть ли способ (автоматически) обнаружить кодовую страницу текстового файла?
detectEncodingFromByteOrderMarks
в конструкторе StreamReader
работает для UTF8
и других файлов, помеченных юникодом, но я ищу способ обнаружения кодовых страниц, таких как ibm850
, windows1252
.
Спасибо за ваши ответы, вот что я сделал.
Файлы, которые мы получаем от конечных пользователей, не имеют понятия о кодовых страницах. Получатели также являются конечными пользователями, и теперь они знают о кодовых страницах: кодовые страницы существуют и раздражают.
Решение:
- Откройте полученный файл в Блокноте, посмотрите на искаженный фрагмент текста. Если кого-то зовут Франсуа или что-то еще, с вашим человеческим интеллектом вы можете догадаться об этом.
- Я создал небольшое приложение, с помощью которого пользователь может открыть файл и ввести текст, который, как ему известно, появится в файле при использовании правильной кодовой страницы.
- Перебирайте все кодовые страницы и отображайте те, которые дают решение, с предоставленным пользователем текстом.
- Если появляется больше одной кодовой страницы, попросите пользователя указать больше текста.