¿Cómo detectar la codificación de un archivo?

102

En mi sistema de archivos (Windows 7) tengo algunos archivos de texto (estos son archivos de script SQL, si eso importa).

Cuando se abre con Notepad ++ , en el menú "Codificación" se informa que algunos de ellos tienen una codificación de "UCS- 2 Little Endian "y algunos de" UTF-8 sin BOM ".

¿Cuál es la diferencia aquí? Todos parecen ser scripts perfectamente válidos. ¿Cómo podría saber qué codificaciones tiene el archivo sin Notepad ++?

    
pregunta Marcel 15.02.2013 - 10:45

2 respuestas

87

Los archivos generalmente indican su codificación con un encabezado de archivo. Hay muchos ejemplos aquí . Sin embargo, incluso leyendo el encabezado nunca puede estar seguro de qué es lo que realmente utiliza la codificación de un archivo .

Por ejemplo, un archivo con los tres primeros bytes 0xEF,0xBB,0xBF es probablemente un archivo codificado en UTF-8. Sin embargo, podría ser un archivo ISO-8859-1 que comienza con los caracteres  . O podría ser un tipo de archivo completamente diferente.

Notepad ++ hace todo lo posible para adivinar qué codificación está utilizando un archivo, y la mayoría de las veces lo hace correctamente. Aunque a veces se equivoca, es por eso que el menú 'Codificación' está ahí, por lo que puede anular su mejor estimación.

Para las dos codificaciones que mencionas:

  • Los archivos "UCS-2 Little Endian" son archivos UTF-16 (según lo que entiendo de la información aquí ) así que probablemente comience con 0xFF,0xFE como los primeros 2 bytes. Por lo que puedo decir, Notepad ++ los describe como "UCS-2" ya que no admite ciertas facetas de UTF-16.
  • Los archivos "UTF-8 sin BOM" no tienen bytes de encabezado. Eso es lo que significa el bit "sin BOM".
respondido por el vaughandroid 15.02.2013 - 11:16
15

No puedes. Si pudiera hacer eso, no habría tantos sitios web o archivos de texto con "alboroto al azar" por ahí. Es por eso que la codificación generalmente se envía junto con la carga útil como metadatos.

En caso de que no lo sea, todo lo que puede hacer es una "conjetura inteligente" pero el resultado suele ser ambiguo, ya que la misma secuencia de bytes podría ser válida en varias codificaciones.

    
respondido por el Marco 15.02.2013 - 11:16

Lea otras preguntas en las etiquetas

Comentarios Recientes

Encontrará una respuesta integral a eso aquí. ¿Cómo encontrar la codificación de nombre de archivo? En todos los concentradores de enrutadores ULTRA 33, al colocar clientes DHCP en el concentrador, serán recibidos con HOST_NAME, que coincidirá con el nombre de la instancia, que es su punto de entrada. Asegúrese de que HOST_NAME sea correcto y esté al revés: YOUR_ACCOUNT_NAME DNS_SERVER DNS_NAME número de la topología de segmentación de red descubierta: 50 para Windows Windows y 13 para Linux. En teoría,... Lee mas