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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top