1 votos

Detectar la codificación de caracteres de caracteres desconocidos en Notepad ++ y encontrar/reemplazar

Tengo un archivo CSV en el que puedo ver el siguiente fragmento:

captura de pantalla

Encontré estos caracteres "negros" al desplazarme por el archivo. El archivo es enorme (32 Mb). No estoy seguro en qué codificación está el archivo; En este momento mi Notepad++ está configurado en "Codificar en UTF-8". Además, cuando intento hacer ASCII -> HEX (Plugins->Convertidor->ASCII -> HEX), obtengo la siguiente salida:

EDA0BDEDB88A

Me gustaría saber:

  • La codificación de estos caracteres negros.
  • Una expresión regular para encontrar ocurrencias similares dentro de mi archivo CSV.

1voto

Wouter Puntos 151

Los caracteres negros son causados ​​por Notepad++ no poder mapear esas secuencias de bytes a un punto final UTF-8 que pueda ser visualizado. Como sabrás, cada carácter se almacena como una serie de bytes. En este caso, esos bytes son

En hexadecimal

ED A0 BD ED B8 8A

En binario

1110 1101 1010 0000 1011 1101 1110 1101 1011 1000 1000 1010

Esto nos lleva a tus preguntas.

¿Cuál es la codificación de esos caracteres negros?

Estos son dos caracteres UTF-8. Más específicamente, el primero ED A0 BD es lo que se llama un 'surrogado alto' y el segundo ED B8 8A es un 'surrogado bajo'. Juntos, forman un surrogado UCS. Ahora que sabemos que estos son caracteres de sustitución, podemos calcular el par de surrogados al revés.

Si buscas estas secuencias de bytes en la tabla de puntos de código UTF-8, encontrarás que el primero se mapea a U+D83D y el segundo se mapea a U+DE0A. Por lo tanto, el par es D83D+DE0A. Esto se mapea a U+1F60A, que es... redoble de tambores ¡Una carita sonriente!

Entonces, la secuencia que estás viendo... es una carita sonriente.

Una expresión regular para encontrar estos caracteres

Ahora que sabemos esto, podemos usar regex para encontrar secuencias como esta de la siguiente manera:

\x{D83D}\x{DE0A}

Y luego para la pregunta que agregaste en los comentarios más tarde (esto es una edición).

¿hay alguna otra utilidad que pueda encontrar los caracteres que no están en UTF-8 en mi archivo csv?

He demostrado ahora que los caracteres en tu archivo son UTF-8. Sin embargo, para responder aún así a tu pregunta, si deseas una herramienta para intentar encontrar manualmente la codificación de algunos caracteres, puedes usar este sitio web. Aquí puedes ingresar algún texto, especificar la codificación y transformarlo en otra codificación para ver a qué caracteres se mapea.

0 votos

¿Hay alguna otra utilidad que pueda encontrar los caracteres que no están en UTF8 en mi archivo csv? Por favor avísame

0 votos

¡Lo descubrí! :) Echa un vistazo a mi edición. ¡La secuencia que estás viendo es un emoticón! Problema resuelto. Caso cerrado.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X