Controllare tutti i file sono codificati come UTF-8
-
20-09-2019 - |
Domanda
Qualcuno sa di un'applicazione Windows che può eseguire la scansione attraverso una directory e verificare quali script sono / non sono codificati come un set di caratteri specificato (UTF-8 in questo caso)? Potrei farlo manualmente, ma che potrebbe richiedere un po 'ed è l'errore abbastanza incline!
Soluzione
UTF-8 non è un set di caratteri, è una codifica per i caratteri Unicode. E, dal momento che questo non è programmazione relativa, sto spingendo sopra al superutente.
Se fa voglia di scrivere un programma per il rilevamento di quelle sequenze, è abbastanza facile:
Illegal UTF-8 initial sequences
UTF-8 Sequence Reason for Illegality
10xxxxxx illegal as initial byte of character (80..BF)
1100000x illegal, overlong (C0 80..BF)
11100000 100xxxxx illegal, overlong (E0 80..9F)
11110000 1000xxxx illegal, overlong (F0 80..8F)
11111000 10000xxx illegal, overlong (F8 80..87)
11111100 100000xx illegal, overlong (FC 80..83)
1111111x illegal; prohibited by spec
Poi, purché il primo ottetto è legale, basta ricordare che il numero di ottetti che formano un punto di codice può essere ottenuto contando il numero di bit 1
prima che il primo bit 0
.
Per esempio, 11110xxx
è l'inizio di una sequenza di 4 ottetti così si dovrebbe saltare avanti 4 ottetti una volta che hai stabilito la sua legalità.
L'altra cosa da fare è garantire che tutti ottetti continuazione Iniziamo con 10
.
Altri suggerimenti
Non so se questo è quello che stai cercando, ma io uso una shell di comando per la regolazione e scaricare i primi byte di ogni file usando il mio programma di utilità hdump
, che visualizza i byte del file in formato esadecimale. Ho quindi cercare il leader 3 byte UTF-8 firma (Byte Order Mark) all'inizio di ogni file.
Il mio programma di utilità hdump
è disponibile all'indirizzo: http://david.tribble.com/programs.html