Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression d'accents avec iconv

4 réponses
Avatar
mpg
Bonjour,

Il y un truc que j'aime bien avec recode, c'est la possibilité de convertir
automatiquement un texte en « 7-bit » par un correspondance approximative mais
honnête. Par exemple :

mpg@siegel:~$ echo àéïôù | recode -f u8..flat
aeiou

Malheureusement, recode n'est pas présent sur tous les systèmes. Iconv par
contre est présent sur, en tout cas, tousceux que je fréquente. J'aimerais bien
pouvoir faire pareil avec iconv que ci-dessus. Il me semble que c'est possible
(quelqu'un me l'a dit, mais vite fait et je n'ai pas retenu l'option). Je
n'arrive pas à trouver et le page de man d'icon n'est franchement pas bavarde.

Quelqu'un sait-il faire ça ?

Merci d'avance,
Manuel.

4 réponses

Avatar
Nicolas George
(attention, tes lignes sont un petit peu trop longues)


mpg wrote in message <fbakkv$so8$:
Malheureusement, recode n'est pas présent sur tous les systèmes. Iconv par
contre est présent sur, en tout cas, tousceux que je fréquente. J'aimerais bien
pouvoir faire pareil avec iconv que ci-dessus. Il me semble que c'est possible
(quelqu'un me l'a dit, mais vite fait et je n'ai pas retenu l'option). Je
n'arrive pas à trouver et le page de man d'icon n'est franchement pas bavarde.

Quelqu'un sait-il faire ça ?


Si c'est un GNU iconv :

iconv -t ASCII//TRANSLIT

fait ça. Sinon, si tu as un perl 5.8, tu peux utiliser son module Unicode
pour mettre le texte en forme canonique décomposée et enlever les
combinants :

perl -MUnicode::Normalize -pe 'BEGIN{binmode STDIN, ":encoding(utf-8)"}
$_ = NFD $_; y/[^x00-xFF]//cd'

Le comportement est un petit peu moins bon pour les caractères qui ne sont
pas juste des caractères accentués, comme oe ou le symbole euro. Tu peux
essayer de varier entre NFD et NFKD pour voir le quel marche mieux.

Avatar
mpg
Le (on) samedi 01 septembre 2007 10:57, Nicolas George a écrit (wrote) :

(attention, tes lignes sont un petit peu trop longues)

C'est vraiment trop long 80 ? Je descend à 76 alors.


mpg wrote in message <fbakkv$so8$:

Quelqu'un sait-il faire ça ?


Si c'est un GNU iconv :

iconv -t ASCII//TRANSLIT

Magnifique. C'est exactement ce que je cherchais.


fait ça. Sinon, si tu as un perl 5.8, tu peux utiliser son module Unicode
pour mettre le texte en forme canonique décomposée et enlever les
combinants :

perl -MUnicode::Normalize -pe 'BEGIN{binmode STDIN, ":encoding(utf-8)"}
$_ = NFD $_; y/[^x00-xFF]//cd'

Oki. L'inconvénient par contre c'est qu'il faut que je le note :)


D'ailleurs, sur un système linux, lequel a-t-on le plus de chances de
trouver : Perl 5.8 ou GNU iconv ? Et (par curiosité) sur d'autres unix ?

Manuel.


Avatar
Nicolas George
Patrick Lamaizière wrote in message <fbbisv$1h4p$:
Mais ça transforme éàéà en 'e`a'e`a


Pas chez moi, quelle est ta locale ?

Avatar
Nicolas George
mpg wrote in message <fbbh86$176p$:
Magnifique. C'est exactement ce que je cherchais.


Pour référence, c'est documenté dans la documentation de la bibliothèque GNU
iconv. Mais sur un système GNU, iconv est intégré à la libc, et cette
information n'est pas reproduite dans la doc de la libc.

D'ailleurs, sur un système linux, lequel a-t-on le plus de chances de
trouver : Perl 5.8 ou GNU iconv ?


Les deux.

Et (par curiosité) sur d'autres unix ?


Plutôt perl 5.8.