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!

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top