To nie jest łatwy do rozwiązania problemem, i generalnie opiera się na heurystykę wziąć najlepszy przypuszczenie na co kodowanie wejściowego, który może zostać zablokowany przez wejść stosunkowo nieszkodliwe - na przykład przyjrzeć this Wikipedia article i The Notepad file encoding Redux, aby uzyskać więcej informacji.
Jeśli szukasz rozwiązania tylko dla systemu Windows z minimalnymi zależnościami, możesz skorzystać z kombinacji IsTextUnicode i MLang's DetectInputCodePage, aby spróbować wykryć zestaw znaków.
Jeśli szukasz przenośności, ale nie przejmuj się zbytnio dużą zależnością w postaci ICU, możesz skorzystać z jej procedur, aby osiągnąć ten sam cel w przenośny sposób.
Czy to tylko ANSI vs UCS2? –
Jakie są możliwe kodowania, których można się spodziewać? Czy istnieje niewielka kolekcja możliwych, czy może to tylko jedna? –
Z jakiego środowiska korzystasz? Myślę, że istnieje biblioteka do wykonania tego w Linuksie, która jest przenośna dla Windows. –