J'ai un pb avec un vieux fichier: quand je l'ouvre avec emacs, les
caractère accentués apparaissent sous la forme \un-nombre:
\205=à
\212=è
\340=ā
etc.
Evidemment (?!) il ne s'agit pas de \ suivi d'un nombre (je veux dire
saisie clavier...) et je ne peux donc pas remplacer ces caractères en
utilisant Echap-%
Quelqu'un sait-il comment déterminer le codage utilisé dans le fichiers
et comment le convertir, soit dans Emacs, soit en utilisant iconv,
utrac.... que sais-je?
Merci pour votre aide.
PS. A la place de U (ou 1...) indiquant le codage, emacs met un t
--
François Patte
Université Paris Descartes
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire saisie clavier...) et je ne peux donc pas remplacer ces caractères en utilisant Echap-%
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire
saisie clavier...) et je ne peux donc pas remplacer ces caractères en
utilisant Echap-%
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire saisie clavier...) et je ne peux donc pas remplacer ces caractères en utilisant Echap-%
Le 25 February 2014 à 18:04, François Patte a tapoté :
Bonjour,
Bonjour,
J'ai un pb avec un vieux fichier: quand je l'ouvre avec emacs, les caractère accentués apparaissent sous la forme un-nombre:
205=à 212=è 340=ā
etc.
Alors 205 c'est de l'octal, ça correspond à 133 ou 85h, comme 212 correspond à 138 ou 8ah.
Si j'en crois ma référence sur les encodages, de bons candidats seraient les codages MSDOS 437 (US) et 850 (Western Europe) qui ont 'à' et 'è' à cette place (pour le 'ā' je ne sais pas ou alors mes yeux me trahissent).
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire saisie clavier...) et je ne peux donc pas remplacer ces caractères en utilisant Echap-%
Non c'est la façon dont Emacs affiche les caractères pour lesquels il ne sait pas quelle est la représentation, parce qu'il ne connaît pas l'encodage du fichier : c'est la valeur octale (par défaut) du caractère.
Il est possible de rechercher un caractère par sa valeur : il faut passer par C-q lors de la saisie suivi de la valeur, par exemple C-s C-q 212 RET
Mais, il vaut mieux ne pas remplacer les caractères manuellement (on risque d'en louper) mais relire le fichier dans le bon encodage (voir plus bas).
Je ne me rappelle plus si on peut changer la base pour l'affichage, par contre on peut choisir la base utilisée avec C-q
;; choix de la base décimale pour la saisie de caractères quotés (C-q n°) (setq read-quoted-char-radix 10)
Quelqu'un sait-il comment déterminer le codage utilisé dans le fichiers et comment le convertir, soit dans Emacs, soit en utilisant iconv, utrac.... que sais-je?
Directement dans Emacs, pour lui dire de relire avec un autre encodage que celui qu'il a utilisé par défaut : C-x RET r cp437 RET et confirmer (pour la version US).
Merci pour cette réponse mais vraiment je n'y arrive pas: en faisant
C-x RET r
et en essayant plusieurs codages proposés en activant la liste de complétions possibles proposée dans le "minibuf", je n'arrive pas à trouver mon bonheur: des tas de caractères étranges se substituent aux caractères codés par des 303 etc.
Pourtant ce fichier a été créé (par moi-même) sous unix/linux (je ne sais plus si linux était déjà en service à l'université) en tous cas avant l'arrivée des diverses "locales" fr_FR, fr_FR-utf8.... etc.
Comment peut-on retrouver l'encodage d'origine?
D'autre par, j'ai essayé de remplacer les caractères xyz par le caractère correspondant saisi au clavier (é, è ou à, etc.) et sauver le fichier en utf8, mais cela ne change rien, je veux dire en rouvrant le fichier, les caractères que j'ai remplacés (et qui apparaissaient "normaux": é, è, à ...) apparaissent, en réouvrant le fichier, sous la forme szd, quand ce n'est pas sous forme composée: hjkoiu ...
Merci pour toute aide.
-- François Patte Université Paris Descartes
Le 25/02/2014 19:04, S�bastien Kirche a écrit :
Le 25 February 2014 à 18:04, François Patte a tapoté :
Bonjour,
Bonjour,
J'ai un pb avec un vieux fichier: quand je l'ouvre avec emacs, les
caractère accentués apparaissent sous la forme un-nombre:
205=à
212=è
340=ā
etc.
Alors 205 c'est de l'octal, ça correspond à 133 ou 85h, comme 212
correspond à 138 ou 8ah.
Si j'en crois ma référence sur les encodages, de bons candidats seraient
les codages MSDOS 437 (US) et 850 (Western Europe) qui ont 'à' et 'è' à
cette place (pour le 'ā' je ne sais pas ou alors mes yeux me
trahissent).
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire
saisie clavier...) et je ne peux donc pas remplacer ces caractères en
utilisant Echap-%
Non c'est la façon dont Emacs affiche les caractères pour lesquels il ne
sait pas quelle est la représentation, parce qu'il ne connaît pas
l'encodage du fichier : c'est la valeur octale (par défaut) du caractère.
Il est possible de rechercher un caractère par sa valeur : il faut passer
par C-q lors de la saisie suivi de la valeur, par exemple C-s C-q 212 RET
Mais, il vaut mieux ne pas remplacer les caractères manuellement (on
risque d'en louper) mais relire le fichier dans le bon encodage (voir
plus bas).
Je ne me rappelle plus si on peut changer la base pour l'affichage, par
contre on peut choisir la base utilisée avec C-q
;; choix de la base décimale pour la saisie de caractères quotés (C-q n°)
(setq read-quoted-char-radix 10)
Quelqu'un sait-il comment déterminer le codage utilisé dans le
fichiers et comment le convertir, soit dans Emacs, soit en utilisant
iconv, utrac.... que sais-je?
Directement dans Emacs, pour lui dire de relire avec un autre encodage
que celui qu'il a utilisé par défaut : C-x RET r cp437 RET et confirmer
(pour la version US).
Merci pour cette réponse mais vraiment je n'y arrive pas: en faisant
C-x RET r
et en essayant plusieurs codages proposés en activant la liste de
complétions possibles proposée dans le "minibuf", je n'arrive pas à
trouver mon bonheur: des tas de caractères étranges se substituent aux
caractères codés par des 303 etc.
Pourtant ce fichier a été créé (par moi-même) sous unix/linux (je ne
sais plus si linux était déjà en service à l'université) en tous cas
avant l'arrivée des diverses "locales" fr_FR, fr_FR-utf8.... etc.
Comment peut-on retrouver l'encodage d'origine?
D'autre par, j'ai essayé de remplacer les caractères xyz par le
caractère correspondant saisi au clavier (é, è ou à, etc.) et sauver le
fichier en utf8, mais cela ne change rien, je veux dire en rouvrant le
fichier, les caractères que j'ai remplacés (et qui apparaissaient
"normaux": é, è, à ...) apparaissent, en réouvrant le fichier, sous la
forme szd, quand ce n'est pas sous forme composée: hjkoiu ...
Le 25 February 2014 à 18:04, François Patte a tapoté :
Bonjour,
Bonjour,
J'ai un pb avec un vieux fichier: quand je l'ouvre avec emacs, les caractère accentués apparaissent sous la forme un-nombre:
205=à 212=è 340=ā
etc.
Alors 205 c'est de l'octal, ça correspond à 133 ou 85h, comme 212 correspond à 138 ou 8ah.
Si j'en crois ma référence sur les encodages, de bons candidats seraient les codages MSDOS 437 (US) et 850 (Western Europe) qui ont 'à' et 'è' à cette place (pour le 'ā' je ne sais pas ou alors mes yeux me trahissent).
Evidemment (?!) il ne s'agit pas de suivi d'un nombre (je veux dire saisie clavier...) et je ne peux donc pas remplacer ces caractères en utilisant Echap-%
Non c'est la façon dont Emacs affiche les caractères pour lesquels il ne sait pas quelle est la représentation, parce qu'il ne connaît pas l'encodage du fichier : c'est la valeur octale (par défaut) du caractère.
Il est possible de rechercher un caractère par sa valeur : il faut passer par C-q lors de la saisie suivi de la valeur, par exemple C-s C-q 212 RET
Mais, il vaut mieux ne pas remplacer les caractères manuellement (on risque d'en louper) mais relire le fichier dans le bon encodage (voir plus bas).
Je ne me rappelle plus si on peut changer la base pour l'affichage, par contre on peut choisir la base utilisée avec C-q
;; choix de la base décimale pour la saisie de caractères quotés (C-q n°) (setq read-quoted-char-radix 10)
Quelqu'un sait-il comment déterminer le codage utilisé dans le fichiers et comment le convertir, soit dans Emacs, soit en utilisant iconv, utrac.... que sais-je?
Directement dans Emacs, pour lui dire de relire avec un autre encodage que celui qu'il a utilisé par défaut : C-x RET r cp437 RET et confirmer (pour la version US).
Merci pour cette réponse mais vraiment je n'y arrive pas: en faisant
C-x RET r
et en essayant plusieurs codages proposés en activant la liste de complétions possibles proposée dans le "minibuf", je n'arrive pas à trouver mon bonheur: des tas de caractères étranges se substituent aux caractères codés par des 303 etc.
Pourtant ce fichier a été créé (par moi-même) sous unix/linux (je ne sais plus si linux était déjà en service à l'université) en tous cas avant l'arrivée des diverses "locales" fr_FR, fr_FR-utf8.... etc.
Comment peut-on retrouver l'encodage d'origine?
D'autre par, j'ai essayé de remplacer les caractères xyz par le caractère correspondant saisi au clavier (é, è ou à, etc.) et sauver le fichier en utf8, mais cela ne change rien, je veux dire en rouvrant le fichier, les caractères que j'ai remplacés (et qui apparaissaient "normaux": é, è, à ...) apparaissent, en réouvrant le fichier, sous la forme szd, quand ce n'est pas sous forme composée: hjkoiu ...
Merci pour toute aide.
-- François Patte Université Paris Descartes
Pascal J. Bourguignon
François Patte writes:
Comment peut-on retrouver l'encodage d'origine?
Il n'y a pas d'algorithme, seulement des heuristiques.
Ce que je fait c'est:
iconv -l|sed -e 's-//--' | while read coding ; do echo =========================================== echo $coding echo =========================================== iconv -f $coding -t utf-8 # en supposant un terminal utf-8 done
et je cherche de visu un encodage qui donne un résultat sensé.
Ensuite, il suffit de taper:
C-x RET c <l'encodage du fichier> RET C-x C-f le-fichier RET
et d'insérer un commentaire sur la première ou la deuxième ligne contenant:
Les cas désagréables c'est quand une partie du fichier est encodée dans un système, une autre dans un autre système, éventuellement avec des ré-encodage foirés... et là ça devient difficile à automatiser.
Sinon, "utrac -P fichier" permet d'obtenir une liste d'encodages "probables" avec un score pour chaque encodage. (utrac ne semble malheureusement plus maintenu et souffre de quelques bugs, mais ça coute rien d'essayer.)
-- Nico.
François Patte <francois.patte@mi.parisdescartes.fr> writes:
Comment peut-on retrouver l'encodage d'origine?
Les cas désagréables c'est quand une partie du fichier est encodée dans
un système, une autre dans un autre système, éventuellement avec des
ré-encodage foirés... et là ça devient difficile à automatiser.
Sinon, "utrac -P fichier" permet d'obtenir une liste d'encodages
"probables" avec un score pour chaque encodage. (utrac ne semble
malheureusement plus maintenu et souffre de quelques bugs, mais ça coute
rien d'essayer.)
Les cas désagréables c'est quand une partie du fichier est encodée dans un système, une autre dans un autre système, éventuellement avec des ré-encodage foirés... et là ça devient difficile à automatiser.
Sinon, "utrac -P fichier" permet d'obtenir une liste d'encodages "probables" avec un score pour chaque encodage. (utrac ne semble malheureusement plus maintenu et souffre de quelques bugs, mais ça coute rien d'essayer.)