Cómo determinar la tabla de codificación de un archivo de texto
Tengo archivos .txt
y .java
y no sé cómo determinar la tabla de codificación de los archivos (Unicode, UTF-8, ISO-8525, ISO). ¿Existe algún programa para determinar la codificación del archivo o para ver la codificación?
5 answers
Si estás en Linux, prueba file -i filename.txt
.
$ file -i vol34.tex
vol34.tex: text/x-tex; charset=us-ascii
Para 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, file-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
También, echa un vistazo aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-29 23:46:15
Abra el archivo con Notepad++ y verá en la esquina inferior derecha el nombre de la tabla de codificación. Y en el menú codificación puede cambiar la tabla de codificación y guardar el archivo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 11:27:44
No puede detectar de forma fiable la codificación de un archivo de texto - lo que puede hacer es conjetura educada buscando un carácter no ascii y tratando de determinar si es un combinación unicode que hace sens en los idiomas que está analizando.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 11:15:07
Vea esta pregunta y la respuesta seleccionada. No hay manera segura de hacerlo. Como mucho, puedes descartar cosas. Es poco probable que obtenga falsos positivos en las codificaciones UTF, pero las codificaciones de 8 bits son difíciles, especialmente si no conoce el idioma de inicio. Ninguna herramienta por ahí actualmente maneja todas las codificaciones comunes de 8 bits de Macs, Windows, Unix, pero la respuesta seleccionada proporciona un enfoque algorítmico que debería funcionar adecuadamente para un cierto subconjunto de codificación.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:02
En un archivo de texto no hay encabezado que guarde la codificación o algo así. 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
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 was, después de instalar iconv
. Primero probé todas las codificaciones, mostrando (grep
) una línea que contenía la palabra www. (una dirección 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 comandos 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). Probé manualmente algunos de ellos, 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 en chino, que ahora es legible (si sabes chino).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-10 14:46:30