Detectar la presencia de un conjunto de caracteres específica
-
13-09-2019 - |
Pregunta
Necesito una manera de detectar si un archivo contiene caracteres de un determinado conjunto de caracteres.
En concreto, quiero para detectar la presencia de caracteres cirílicos UTF8-codificado en una serie de archivos. ¿Existe una herramienta para hacer esto?
Gracias
Solución
Si usted está buscando una solución preparada, es posible que desee probar Enca .
Sin embargo, si sólo se desea detectar la presencia de lo que puede posiblemente decodificado como UTF-8 caracteres cirílicos (sin ningún tipo de codificación UTF-8 controles completos de validez), sólo hay que grep para algo así como /(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){
n ,}/
(esta expresión regular exacta es de n caracteres cirílicos rusos UTF8 codificados posteriores). Para la comprobación adicional de que todo el archivo sólo contiene datos válidos UTF-8 se puede usar algo como isutf8(1)
.
Ambos métodos tienen sus lados buenos y malos y, a veces pueden dar resultados erróneos.
Otros consejos
IIRC la biblioteca UCI tiene código que hace la detección de conjunto de caracteres. Aunque es básicamente una mejor estimación de esfuerzo.
Edit: Yo no recuerdo, echa un vistazo a este papel / tutorial