recientes por muestra mac imagenes fecha extension explorador carpeta busqueda buscar borrar avanzada archivos macos encoding latex utf-8

macos - por - finder no muestra archivos



¿Cómo determino la codificación de archivos en OSX? (16)

¿Qué LaTeX estás usando? Cuando estaba usando teTeX, tuve que descargar manualmente el paquete unicode y agregarlo a mis archivos .tex:

% UTF-8 stuff /usepackage[notipa]{ucs} /usepackage[utf8x]{inputenc} /usepackage[T1]{fontenc}

Ahora, cambié a XeTeX desde el paquete TeXlive 2008 ( here ), es aún más simple:

% UTF-8 stuff /usepackage{fontspec} /usepackage{xunicode}

En cuanto a la detección de la codificación de un archivo, podría jugar con el file(1) (pero es bastante limitado) pero, como dijo otra persona, es difícil.

Intento ingresar algunos caracteres UTF-8 en un archivo LaTeX en TextMate (que dice que su codificación predeterminada es UTF-8), pero parece que LaTeX no los entiende. La ejecución de cat my_file.tex muestra los caracteres correctamente en Terminal. Ejecutar ls -al muestra algo que nunca he visto antes: una "@" en la lista del archivo:

-rw-r--r--@ 1 me users 2021 Feb 11 18:05 my_file.tex

(Y, sí, estoy usando /usepackage[utf8]{inputenc} en LaTeX).

He encontrado iconv , pero parece que no puede decirme qué es la codificación, solo se convertirá una vez que lo encuentre.


El clásico LaTeX de 8 bits está muy restringido en cuanto a los caracteres UTF8 que puede usar; depende en gran medida de la codificación de la fuente que está utilizando y de los glifos que la fuente tiene disponible.

Como no da un ejemplo específico, es difícil saber exactamente dónde está el problema: si está intentando usar un glifo que su fuente no tiene o si no está usando la codificación de fuente correcta en el primer lugar.

Aquí hay un ejemplo mínimo que muestra cómo se pueden usar algunos caracteres UTF8 en un documento LaTeX:

/documentclass{article} /usepackage[T1]{fontenc} /usepackage{lmodern} /usepackage[utf8]{inputenc} /begin{document} ‘Héllø—thêrè.’ /end{document}

Puede que tenga más suerte con la codificación [utf8x], pero tenga un poco de advertencia de que ya no es compatible y tiene algunas idiosincrasias en comparación con [utf8] (hasta donde recuerdo, ha pasado un tiempo desde que lo he mirado). Pero si hace el truco, eso es todo lo que importa para ti.


El signo @ significa que el archivo tiene atributos extendidos . xattr file muestra los atributos que tiene, el xattr -l file muestra los valores de los atributos (que a veces puede ser grande; intente, por ejemplo, xattr /System/Library/Fonts/HelveLTMM para ver una fuente antigua que existe en la bifurcación de recursos).


El uso de file comando de file con la opción --mime-encoding (por ejemplo, file --mime-encoding some_file.txt ) en lugar de la opción -I funciona en OS X y tiene el beneficio adicional de omitir el tipo de mime, "text / plain", que probablemente no te importe


El uso de la opción -I (que es una mayúscula i) en el comando de archivo parece mostrar la codificación del archivo.

file -I {filename}


En Mac OS X, el file -I comando file -I (mayúscula i) le dará el juego de caracteres adecuado siempre que el archivo que está probando contenga caracteres fuera del rango ASCII básico.

Por ejemplo, si ingresas a la Terminal y usas vi para crear un archivo, por ejemplo. vi test.txt luego inserta algunos caracteres e incluye un carácter acentuado (prueba ALT-e seguido de e) luego guarda el archivo.

file -I text.txt y debería obtener un resultado como este:

test.txt: text/plain; charset=utf-8


Escribir el file myfile.tex en un terminal a veces puede indicarle la codificación y el tipo de archivo utilizando una serie de algoritmos y números mágicos. Es bastante útil, pero no confíe en que proporcione información concreta o confiable.

Normalmente, se informa que un archivo Localizable.strings (que se encuentra en aplicaciones localizadas de Mac OS X) es un archivo fuente C UTF-16.


Implementé el script bash a continuación, funciona para mí.

Primero intenta iconv partir de la codificación devuelta por el file --mime-encoding a utf-8 .

Si eso falla, pasa por todas las codificaciones y muestra la diferencia entre el archivo original y el recodificado. Se saltea codificaciones que producen una gran salida de diff ("grande" como se define por la variable MAX_DIFF_LINES o el segundo argumento de entrada), ya que es muy probable que la codificación sea incorrecta.

Si ocurren "cosas malas" como resultado del uso de este script, no me culpes. Hay una rm -f allí, entonces habrá monstruos. Traté de evitar los efectos adversos al usarlo en archivos con un sufijo aleatorio, pero no estoy haciendo ninguna promesa.

Probado en Darwin 15.6.0.

#!/bin/bash if [[ $# -lt 1 ]] then echo "ERROR: need one input argument: file of which the enconding is to be detected." exit 3 fi if [ ! -e "$1" ] then echo "ERROR: cannot find file ''$1''" exit 3 fi if [[ $# -ge 2 ]] then MAX_DIFF_LINES=$2 else MAX_DIFF_LINES=10 fi #try the easy way ENCOD=$(file --mime-encoding $1 | awk ''{print $2}'') #check if this enconding is valid iconv -f $ENCOD -t utf-8 $1 &> /dev/null if [ $? -eq 0 ] then echo $ENCOD exit 0 fi #hard way, need the user to visually check the difference between the original and re-encoded files for i in $(iconv -l | awk ''{print $1}'') do SINK=$1.$i.$RANDOM iconv -f $i -t utf-8 $1 2> /dev/null > $SINK if [ $? -eq 0 ] then DIFF=$(diff $1 $SINK) if [ ! -z "$DIFF" ] && [ $(echo "$DIFF" | wc -l) -le $MAX_DIFF_LINES ] then echo "===== $i =====" echo "$DIFF" echo "Does that make sense [N/y]" read $ANSWER if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] then echo $i exit 0 fi fi fi #clean up re-encoded file rm -f $SINK done echo "None of the encondings worked. You''re stuck." exit 3


Puede intentar cargar el archivo en una ventana de Firefox y luego ir a Ver - Codificación de caracteres. Debe haber una marca de verificación junto al tipo de codificación del archivo.


Solo usa:

file -I <filename>

Eso es.


Soy perezoso. Solo uso el texto sublime para cambiar las codificaciones.


También puede convertir de un tipo de archivo a otro usando el siguiente comando:

iconv -f original_charset -t new_charset originalfile > newfile

p.ej

iconv -f utf-16le -t utf-8 file1.txt > file2.txt


Una forma de fuerza bruta para verificar la codificación podría ser simplemente verificar el archivo en un editor hexadecimal o similar. (o escriba un programa para verificar) Mire los datos binarios en el archivo. El formato UTF-8 es bastante fácil de reconocer. Todos los caracteres ASCII son bytes individuales con valores inferiores a 128 (0x80). Las secuencias multibyte siguen el patrón que se muestra en el artículo de la wiki.

Si puede encontrar una forma más sencilla de obtener un programa para verificar la codificación, obviamente es un atajo, pero si todo lo demás falla, esto sería suficiente.


¡Synalyze It! permite comparar texto o bytes en todas las codificaciones que ofrece la biblioteca ICU . Al usar esa función, normalmente verá de inmediato qué página de códigos tiene sentido para sus datos.


@ Significa que el archivo tiene atributos de archivo extendidos asociados. Puede consultarlos usando la función getxattr() .

No hay una manera definida de detectar la codificación de un archivo. Lea this respuesta, explica por qué.

Hay una herramienta de línea de comandos, enca , que intenta adivinar la codificación. Quizás quieras revisarlo.


vim -c ''execute "silent !echo " . &fileencoding | q'' {filename}

aliased en algún lugar de mi configuración de bash como

alias vic="vim -c ''execute /"silent !echo /" . &fileencoding | q''"

así que simplemente escribo

vic {filename}

En mi vainilla OSX Yosemite, arroja resultados más precisos que "archivo -I":

$ file -I pdfs/udocument0.pdf pdfs/udocument0.pdf: application/pdf; charset=binary $ vic pdfs/udocument0.pdf latin1 $ $ file -I pdfs/t0.pdf pdfs/t0.pdf: application/pdf; charset=us-ascii $ vic pdfs/t0.pdf utf-8