Domanda

Ho bisogno di un modo per rilevare se un file contiene caratteri da un determinato set di caratteri.

In particolare, voglio rilevare la presenza di caratteri cirillici UTF8-encoded in una serie di file. Esiste uno strumento per fare questo?

Grazie

È stato utile?

Soluzione

Se siete alla ricerca di soluzione pronta, si potrebbe desiderare di provare Enca .

Tuttavia, se si desidera solo per rilevare la presenza di ciò che può essere eventualmente decodificato come UTF-8 caratteri cirillici (senza alcun completi UTF-8 controlli di validità), devi solo grep per qualcosa di simile /(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){ n ,}/ (questo regexp esatto è per n successivi caratteri cirillici russi UTF8-encoded). Per ulteriore controllo che l'intero file contiene solo i dati validi UTF-8 si può usare qualcosa di simile a isutf8(1) .

Entrambi i metodi hanno i loro lati buoni e cattivi e possono a volte dare risultati errati.

Altri suggerimenti

IIRC la libreria ICU ha codice che fa il rilevamento set di caratteri. Anche se è fondamentalmente un'ipotesi migliore sforzo.

Edit: mi ricordo male, controlla questo carta / esercitazione

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