W naszej aplikacji otrzymujemy pliki tekstowe ( .txt
, .csv
etc.) z różnych źródeł. Podczas czytania pliki te czasami zawierają śmieci, ponieważ pliki zostały utworzone na innej / nieznanej stronie kodowej.
Czy istnieje sposób (automatycznego) wykrycia strony kodowej pliku tekstowego?
detectEncodingFromByteOrderMarks
Na StreamReader
konstruktora, pracuje UTF8
i inne pliki Unicode oznakowane, ale szukam sposobu na wykrycie stron kodowych, jak ibm850
, windows1252
.
Dzięki za odpowiedzi, właśnie to zrobiłem.
Pliki, które otrzymujemy, pochodzą od użytkowników końcowych, nie mają pojęcia o stronach kodowych. Odbiorniki są również użytkownikami końcowymi, do tej pory wiedzą o stronach kodowych: Strony kodowe istnieją i są denerwujące.
Rozwiązanie:
- Otwórz otrzymany plik w Notatniku, spójrz na zniekształcony fragment tekstu. Jeśli ktoś nazywa się François lub coś w tym rodzaju, dzięki swojej ludzkiej inteligencji możesz to odgadnąć.
- Utworzyłem małą aplikację, za pomocą której użytkownik może otworzyć plik, i wprowadzić tekst, o którym wie, że pojawi się on w pliku, gdy zostanie użyta poprawna strona kodowa.
- Zapętlaj wszystkie strony kodowe i wyświetlaj te, które dają rozwiązanie z tekstem dostarczonym przez użytkownika.
- Jeśli pojawi się więcej niż jedna strona kodowa, poproś użytkownika o podanie większej ilości tekstu.