sublime - Cómo determinar la tabla de codificación de un archivo de texto
detectar codificacion online (5)
Tengo archivos .txt
y .java
y no sé cómo determinar la tabla de codificación de los archivos (Unicode, UTF-8, ISO-8525, ...). ¿Existe algún programa para determinar la codificación del archivo o para ver la codificación?
Abra el archivo con Notepad ++ y verá en la esquina inferior derecha el nombre de la tabla de codificación. Y en la codificación del menú puede cambiar la tabla de codificación y guardar el archivo.
En un archivo de texto, no hay un encabezado que guarde la codificación más o menos. Puede probar el comando linux / unix find
que intenta adivinar la codificación:
file -i unreadablefile.txt
o en algunos sistemas
file -I unreadablefile.txt
Pero eso a menudo te da text/plain; charset=iso-8859-1
text/plain; charset=iso-8859-1
aunque el archivo es ilegible (glifos crípticos).
Esto es lo que hice para encontrar la codificación de archivo correcta para un archivo ilegible y luego traducirlo a utf8, luego de instalar iconv
. Primero intenté todas las codificaciones, mostrando ( grep
) una línea que contenía la palabra www. (una dirección de sitio web):
for ENCODING in $(iconv -l); do echo -n "$ENCODING "; iconv -f $ENCODING -t utf-8 unreadablefile.txt 2>/dev/null| grep ''www''; done | less
Esta última línea de comando muestra la codificación del archivo probado y luego la línea traducida / transcodificada.
Hubo algunas líneas que mostraron resultados legibles y consistentes (un idioma a la vez). Intenté algunos de ellos manualmente, por ejemplo:
ENCODING=WINDOWS-936; iconv -f $ENCODING -t utf-8 unreadablefile.txt -o test_with_${ENCODING}.txt
En mi caso, era una codificación de Windows china, que ahora es legible (si sabes chino).
No puede detectar de manera confiable la codificación de un archivo de texto; lo que puede hacer es hacer una conjetura al buscar un carácter que no sea ASCII y tratar de determinar si es una combinación unicode lo que hace sentido en los idiomas que está analizando.
Si está en Linux, intente con el file -i filename.txt
.
$ file -i vol34.tex
vol34.tex: text/x-tex; charset=us-ascii
Como referencia, aquí está mi entorno:
$ which file
/usr/bin/file
$ file --version
file-5.09
magic file from /etc/magic:/usr/share/misc/magic
Algunas versiones de file
(por ejemplo, archivo-5.04 en OS X / macOS) tienen conmutadores de línea de comandos ligeramente diferentes:
$ file -I vol34.tex
vol34.tex: text/x-tex; charset=us-ascii
$ file --mime vol34.tex
vol34.tex: text/x-tex; charset=us-ascii
Además, echa un vistazo here .
Vea esta pregunta y la respuesta seleccionada . No hay una manera segura de hacerlo. Como mucho, puedes descartar cosas. Las codificaciones UTF es poco probable que obtenga falsos positivos, pero las codificaciones de 8 bits son difíciles, especialmente si no conoce el idioma de inicio. Actualmente, ninguna herramienta maneja todas las codificaciones comunes de 8 bits de Mac, Windows, Unix, pero la respuesta seleccionada proporciona un enfoque algorítmico que debería funcionar adecuadamente para un cierto subconjunto de codificaciones.