Rilevare la presenza di un insieme di caratteri specifica
-
13-09-2019 - |
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
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