Op mijn bestandssysteem (Windows 7) staan enkele tekstbestanden (dit zijn SQL script bestanden, als dat iets uitmaakt).
Wanneer ik ze open met Notepad++, wordt in het "Encoding" menu gemeld dat sommige een encoding hebben van "UCS-2 Little Endian" en sommige van "UTF-8 zonder BOM".
Wat is hier het verschil? Het lijken allemaal perfect geldige scripts te zijn. Hoe kan ik zien welke encodings het bestand heeft zonder Notepad++?
Bestanden geven hun codering meestal aan met een file header. Er zijn vele voorbeelden hier. Maar zelfs als je de header leest, kun je er nooit zeker van zijn welke codering een bestand werkelijk gebruikt**.
Bijvoorbeeld, een bestand met de eerste drie bytes 0xEF,0xBB,0xBF
is waarschijnlijk een UTF-8 gecodeerd bestand. Het kan echter ook een ISO-8859-1 bestand zijn dat toevallig begint met de tekens 
. Of het zou een heel ander bestandstype kunnen zijn.
Notepad++ doet zijn best om te raden welke encoding een bestand gebruikt, en meestal heeft het het bij het rechte eind. Soms heeft het het echter mis - daarom is het 'Encoding' menu er, zodat je de beste gok kunt opheffen.
Voor de twee coderingen die u noemt:
0xFF,0xFE
als de eerste 2 bytes. Voor zover ik kan zien, beschrijft Notepad++ ze als "UCS-2" omdat het bepaalde facetten van UTF-16 niet ondersteunt.Dat kunt u niet. Als je dat kon, zouden er niet zoveel websites of tekstbestanden met "willekeurig gebrabbel" zijn. Daarom wordt de codering meestal als meta-gegevens met de payload meegestuurd.
Als dat niet het geval is, is het enige wat je kunt doen een "slimme gok", maar het resultaat is vaak dubbelzinnig omdat dezelfde byte-sequentie in verschillende coderingen geldig kan zijn.