Tengo algunos archivos de texto con codificación UTF-8 que muestran extraños códigos de escape en Emacs. Por ejemplo, este texto:
En ista quaestione primo exponam quid intelligendum est per hoc nomen 'Deus'; secundo, responbo ad quaestionem.
Shows como este en Emacs:
Esto solo sucede en Emacs. Otros editores muestran el texto correctamente. ¿Como puedo solucionar este problema?
Actualización 1
Si llamo revert-buffer-with-coding-system
y selecciono utf-8
el archivo, léelo correctamente. Entonces, como Gilles ha adivinado correctamente, Emacs no está detectando la codificación del archivo. Si agrego el código ; -*- coding: utf-8 -*-
al archivo, Emacs se abre y lo muestra correctamente.
Actualización 2
Volví a codificar el archivo en "UTF-8 con codificación BOM", y ahora se muestra bien en Emacs. No sé cuál es la diferencia entre los dos tipos, pero Emacs parece conocer solo el BOMed.
fuente
emacs -q
oemacs -Q
?emacs -q
oemacs -Q
.Respuestas:
Por alguna razón, Emacs no reconoce el archivo como UTF-8. Puede forzar a Emacs a volver a abrir el archivo como UTF-8 ejecutando el comando
C-x RET r
(revert-buffer-with-coding-system
) e ingresandoutf-8
.La razón por la cual Emacs no reconoció este archivo como UTF-8 (pero reconoce otro) es probable que contenga alguna secuencia UTF-8 no válida. Esta secuencia seguirá apareciendo como barra invertida seguida de tres dígitos octales con un color diferente (la
escape-glyph
cara) después de reinterpretar el archivo como UTF-8. Puede buscar dicha secuencia ejecutandoC-M-s
(isearch-regexp
) y buscandodonde
^@
se ingresa escribiendoC-q C-SPC
(es el carácter ^ @ = 0, no la secuencia de dos caracteres circumflex-at; el carácter anterior es el carácter circunflejo).Puede forzar Emacs para reconocer el archivo como UTF-8 mediante la adición de una variable de archivo de sistema de codificación : algo Dicho así
-*-coding: utf-8-*-
en la primera línea, o poner algo como esto cerca del final del archivo (se puede sustituir#
por cualquier prefijo, peroLocal Variables:
y laEnd:
necesidad aparecer exactamente así con los dos puntos finales):Emacs elige la codificación según la cual los archivos se interpretan en función de varias configuraciones, principalmente entornos de lenguaje y las variables
auto-coding-alist
yauto-coding-regexp-alist
. Dado que tiene el mismo problema con este archivo incluso cuando se ejecutaemacs -Q
, creo que esto no es un problema con esa configuración, sino con el contenido del archivo.fuente
\342
,\200
,\230
, etc. ser seleccionado. Pero si lo abro "correctamente" (usando la variable de codificación), entonces no aparecen resultados de búsqueda.emacs -Q
).Es tarde para responder la pregunta sobre la lista de materiales, pero lo haré de todos modos.
La marca de orden de bytes (BOM) es una secuencia de tres bytes \ xef \ xbb \ xbf que, al comienzo de un archivo, indica a los sistemas y aplicaciones que los contenidos están codificados como UTF-8. Correctamente son metadatos, no tratados como parte de los contenidos.
La mayoría de las aplicaciones, Emacs es una de ellas, honra la lista de materiales y escribe todos los archivos UTF-8 con ella. Otras aplicaciones pueden honrarlo en la lectura, pero no escribirlo; y otros no lo saben y pueden lanzar un mensaje de error cuando lo encuentran. En otras palabras, la situación es desordenada. Prefiero usarlo siempre que sea posible.
fuente
Solo para sistemas similares a UNIX.
En muchos casos, la definición de codificación sencilla en ~ / .bashrc ~ / bash_profile
logrado con
en ~ / .profile debería resolver su problema.
PD: Después de estas correcciones, debe RELOGINARSE en su sesión para permitir que los cambios se hagan visibles.
fuente