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