J'essaie d'entrer des caractères UTF-8 dans un fichier LaTeX dans TextMate (qui dit que son encodage par défaut est UTF-8), mais LaTeX ne semble pas les comprendre.
L'exécution cat my_file.tex
montre correctement les caractères dans le terminal. L'exécution ls -al
montre quelque chose que je n'ai jamais vu auparavant: un "@" dans la liste des fichiers:
-rw-r--r--@ 1 me users 2021 Feb 11 18:05 my_file.tex
(Et, oui, j'utilise \usepackage[utf8]{inputenc}
dans le LaTeX.)
J'ai trouvé iconv
, mais cela ne semble pas pouvoir me dire quel est l'encodage - il ne sera converti qu'une fois que je le comprendrai.
Réponses:
Les
@
moyens que le fichier comporte un fichier d' attributs étendus associés. Vous pouvez les interroger à l'aide de lagetxattr()
fonction.Il n'y a pas de moyen défini de détecter l'encodage d'un fichier. Lisez cette réponse, elle explique pourquoi.
Il existe un outil de ligne de commande, enca , qui tente de deviner l'encodage. Vous voudrez peut-être le vérifier.
la source
@
incluent l'attribut de codage de fichier. Vous pouvez utiliser la commandexattr -p com.apple.TextEncoding <filename>
pour examiner l'attribut de codage s'il existe.ls -l@ <filename>
pour voir quels attributs sont définis pour le fichier. Pour voir l'attribut réel, tapezxattr -p com.apple.TextEncoding <filename>
enca
fairebrew install enca
et vous devez spécifier la langue mais aucune ne fonctionne, donc:enca FILENAME -L __
L'utilisation de l'
-I
option (c'est un i majuscule) sur la commande de fichier semble afficher le codage du fichier.la source
file -I *
semble fonctionner parfaitement pour moi (sur OSX). Un système s'est plaint de l'encodage de l'un des nombreux fichiers, sans préciser lequel. Tous les fichiers étaient ascii, sauf un, qui était utf-8. Très probablement le coupable.Sous Mac OS X, la commande
file -I
(i majuscule) vous donnera le jeu de caractères approprié tant que le fichier que vous testez contient des caractères en dehors de la plage ASCII de base.Par exemple, si vous allez dans Terminal et utilisez vi pour créer un fichier, par exemple.
vi test.txt
puis insérez quelques caractères et incluez un caractère accentué (essayez ALT-e suivi de e) puis enregistrez le fichier.Ils tapent
file -I text.txt
et vous devriez obtenir un résultat comme celui-ci:test.txt: text/plain; charset=utf-8
la source
file
commande revendique sonus-ascii
alias quelque part dans ma configuration bash comme
alors je tape juste
Sur mon OSX Yosemite vanille, il donne des résultats plus précis que "file -I":
la source
Vous pouvez également convertir d'un type de fichier à un autre à l'aide de la commande suivante:
par exemple
la source
Utilisez simplement:
C'est tout.
la source
file -I
ça me faittext/plain; charset=unknown-8bit
. Bien que cela fonctionne mieux pour un fichier UTF8:text/plain; charset=utf-8
.Utiliser la
file
commande avec l'--mime-encoding
option (par exemplefile --mime-encoding some_file.txt
) au lieu de l'option -I fonctionne sur OS X et a l'avantage supplémentaire d'omettre le type mime, "text / plain", dont vous ne vous souciez probablement pas.la source
file
commande. Je ne savais pas que l'un existait. Noob. En tous cas. Désolé pour le vote négatif. Donc, ne me laisse pas l'annuler à moins que quelqu'un ne modifie cette réponse.Le LaTeX 8 bits classique est très limité dans les caractères UTF8 qu'il peut utiliser; cela dépend fortement de l'encodage de la police que vous utilisez et des glyphes disponibles pour cette police.
Comme vous ne donnez pas d'exemple spécifique, il est difficile de savoir exactement où se situe le problème - si vous essayez d'utiliser un glyphe que votre police n'a pas ou si vous n'utilisez pas le bon encodage de police dans le premier endroit.
Voici un exemple minimal montrant comment quelques caractères UTF8 peuvent être utilisés dans un document LaTeX:
Vous avez peut-être plus de chance avec l'encodage [utf8x], mais soyez légèrement averti qu'il n'est plus supporté et qu'il a quelques particularités par rapport à [utf8] (pour autant que je me souvienne; ça fait un moment que je ne l'ai pas regardé). Mais si cela fait l'affaire, c'est tout ce qui compte pour vous.
la source
Le signe @ signifie que le fichier a des attributs étendus .
xattr file
montre quels attributs il a,xattr -l file
montre aussi les valeurs d'attribut (qui peuvent parfois être grandes - essayez par exemplexattr /System/Library/Fonts/HelveLTMM
de voir une police à l'ancienne qui existe dans la fourchette de ressources).la source
Taper
file myfile.tex
dans un terminal peut parfois vous indiquer le codage et le type de fichier à l'aide d'une série d'algorithmes et de nombres magiques. C'est assez utile mais ne comptez pas sur lui pour fournir des informations concrètes ou fiables.Un
Localizable.strings
fichier (trouvé dans les applications Mac OS X localisées) est généralement signalé comme un fichier source UTF-16 C.la source
Synalyze It! permet de comparer du texte ou des octets dans tous les encodages proposés par la bibliothèque ICU . En utilisant cette fonctionnalité, vous voyez généralement immédiatement quelle page de codes convient à vos données.
la source
Vous pouvez essayer de charger le fichier dans une fenêtre de Firefox, puis aller dans Affichage - Encodage de caractères. Il doit y avoir une coche à côté du type de codage du fichier.
la source
Quel LaTeX utilisez-vous? Lorsque j'utilisais teTeX, je devais télécharger manuellement le package unicode et l'ajouter à mes fichiers .tex:
Maintenant, je suis passé à XeTeX depuis le package TeXlive 2008 ( ici ), c'est encore plus simple:
Quant à la détection de l'encodage d'un fichier, vous pourriez jouer avec
file(1)
(mais c'est assez limité) mais comme quelqu'un l'a dit, c'est difficile.la source
Un moyen brutal de vérifier l'encodage pourrait simplement être de vérifier le fichier dans un éditeur hexadécimal ou similaire. (ou écrivez un programme pour vérifier) Regardez les données binaires dans le fichier. Le format UTF-8 est assez facile à reconnaître. Tous les caractères ASCII sont des octets simples avec des valeurs inférieures à 128 (0x80) Les séquences multi-octets suivent le modèle indiqué dans l' article du wiki
Si vous pouvez trouver un moyen plus simple d'obtenir un programme pour vérifier l'encodage pour vous, c'est évidemment un raccourci, mais si tout le reste échoue, cela ferait l'affaire.
la source
J'ai implémenté le script bash ci-dessous, cela fonctionne pour moi.
Il essaie d'abord de
iconv
partir du codage renvoyé parfile --mime-encoding
toutf-8
.Si cela échoue, il passe par tous les encodages et affiche la différence entre le fichier d'origine et le fichier réencodé. Il saute les encodages qui produisent une sortie diff importante («large» comme défini par la
MAX_DIFF_LINES
variable ou le deuxième argument d'entrée), car ceux-ci sont probablement le mauvais encodage.Si de "mauvaises choses" se produisent à la suite de l'utilisation de ce script, ne me blâmez pas. Il y a un
rm -f
dedans, donc il y a des monstres. J'ai essayé d'éviter les effets indésirables en l'utilisant sur des fichiers avec un suffixe aléatoire, mais je ne fais aucune promesse.Testé sur Darwin 15.6.0.
la source