J'ai des fichiers texte encodés en UTF-8 qui affichent d'étranges codes d'échappement dans Emacs. Par exemple, ce texte:
In ista quaestione primo exponam quid intelligendum est per hoc nomen 'Deus'; secundo, respondebo ad quaestionem.
Des émissions comme celle-ci dans Emacs:
Cela ne se produit que dans Emacs. D'autres éditeurs affichent correctement le texte. Comment puis-je résoudre ce problème?
Mise à jour 1
Si j'appelle revert-buffer-with-coding-system
et sélectionne utf-8
le fichier, lisez-le correctement. Ainsi, comme Gilles l'a correctement deviné, Emacs ne détecte pas l'encodage des fichiers. Si j'ajoute le code ; -*- coding: utf-8 -*-
au fichier, Emacs s'ouvre et l'affiche correctement.
Update 2
J'ai réencodé le fichier en "UTF-8 avec encodage BOM", et maintenant il s'affiche bien dans Emacs. Je ne sais pas quelle est la différence entre les deux types, mais Emacs semble ne connaître que le BOMed.
la source
emacs -q
ouemacs -Q
?emacs -q
ouemacs -Q
.Réponses:
Pour une raison quelconque, Emacs ne reconnaît pas le fichier comme UTF-8. Vous pouvez forcer Emacs à rouvrir le fichier au format UTF-8 en exécutant la commande
C-x RET r
(revert-buffer-with-coding-system
) et en entrantutf-8
.La raison pour laquelle Emacs n'a pas reconnu ce fichier comme UTF-8 (mais en reconnaît d'autres) est probablement qu'il contient une séquence UTF-8 non valide. Cette séquence apparaîtra toujours comme une barre oblique inverse suivie de trois chiffres octaux avec une couleur différente (le
escape-glyph
visage) après avoir réinterprété le fichier en UTF-8. Vous pouvez rechercher une telle séquence en exécutantC-M-s
(isearch-regexp
) et en recherchantoù
^@
est entré en tapantC-q C-SPC
(c'est le caractère ^ @ = 0, pas la séquence de deux caractères circumflex-at; le caractère avant c'est le caractère circonflexe).Vous pouvez forcer Emacs à reconnaître le fichier comme UTF-8 en ajoutant une variable de fichier système de codage : mettez quelque chose comme
-*-coding: utf-8-*-
sur la première ligne, ou mettez quelque chose comme ça vers la fin du fichier (vous pouvez remplacer#
par n'importe quel préfixe, maisLocal Variables:
etEnd:
doit apparaissent exactement comme ceci avec les deux points de fuite):Emacs choisit l'encodage selon lequel les fichiers sont interprétés en fonction de plusieurs paramètres, principalement les environnements linguistiques et les variables
auto-coding-alist
etauto-coding-regexp-alist
. Étant donné que vous avez le même problème avec ce fichier même lors de l'exécutionemacs -Q
, je pense que ce n'est pas un problème avec ces paramètres, mais avec le contenu du fichier.la source
\342
,\200
,\230
, etc. être sélectionné. Mais si je l'ouvre "correctement" (en utilisant la variable de codage), aucun résultat de recherche n'apparaît.emacs -Q
).Il est tard pour répondre à la question sur la nomenclature, mais je le ferai quand même.
La marque d'ordre des octets (BOM) est une séquence de trois octets \ xef \ xbb \ xbf qui, au début d'un fichier, indique aux systèmes et aux applications que le contenu est codé en UTF-8. À proprement parler, ce sont des métadonnées, non traitées comme faisant partie du contenu.
La plupart des applications - Emacs en fait partie - honorent la nomenclature et écrivent tous les fichiers UTF-8 avec. D'autres applications peuvent l'honorer en lecture, mais pas l'écrire; et d'autres ne le savent pas et peuvent lancer un message d'erreur lorsqu'ils le rencontrent. En d'autres termes, la situation est désordonnée. Je préfère l'utiliser autant que possible.
la source
Pour les systèmes de type UNIX uniquement.
Dans de nombreux cas, la définition de codage simple dans ~ / .bashrc ~ / bash_profile
accompli avec
dans ~ / .profile devrait résoudre votre problème.
PS Après ces corrections, vous devez vous reconnecter dans votre session pour permettre aux modifications de devenir visibles.
la source