OVH Cloud OVH Cloud

Substitution et caractères accentués ?

16 réponses
Avatar
ctobini
Bonjour,

J'ai un petit soucis avec les caract=E8res fran=E7ais d'un fichier :

Un petit 'file' Unixien du fichier :-) : Fichier1.csv: ISO-8859 C++
program text, with very long lines, with CRLF line terminators (Nota:
ce n'est cependant pas un programme C++).

Je voudrais substituer tous les caract=E8res accentu=E9s par leurs
=E9quivalents sans accent (tr/=E9=E8=EA/eee/ par exemple). Ces caract=E8res
ne semblent pas du tout =EAtre reconnue par perl, dans mes regex.

Sauriez-vous comment faire cette manipulation ?

En vous remerciant.

C=2E Tobini

6 réponses

1 2
Avatar
Nicolas George
"ctobini" wrote in message
:
J'ai une erreur :

"x{03bc}" does not map to iso-8859-1 at a.pl line 332, je suppose que
c'est le fameux caractère 'micro'.

A noter que, comme conseillé dans ce même post, j'ai utilisé
Unicode::Normalize::NFKD afin d'éliminer les carcatères accentués.


Ah, c'est traître : U+00B5 MICRO SIGN a pour décomposition de compatibilité
U+03BC GREEK SMALL LETTER MU, il est donc remplacé par ça en forme KD, or
MICRO SIGN est un caractère latin-1, alors que GREEK SMALL LETTER MU n'en
est pas un.

On pourrait utiliser la forme D tout court, qui ne fait pas les
décompositions de compatibilité, mais pour le coup, certaines décompositions
intéressantes n'auront pas lieu. Je croyais que le OE avait une
décomposition de compatibilité en O plus E, mais ce n'est pas le cas, donc
on n'y perd pas.

Donc ici, utiliser la forme D au lieu de la forme KD est probablement une
solution raisonnable, surtout si l'entrée est en ISO-8859-1. Donc NFD au
lieu de NFKD.

Évidemment, utiliser ISO-8859-1 pour de nouveaux développements est une
mauvaise idée...

Avatar
ctobini
Bonjour,

Ca a très bien marché avec la forme D, merci beaucoup.

Sauriez-vous où je pourrais trouver des infos à la fois sur le codage
des caractères (ISO, Unicode, UTF8...), la différence entre ces
codages, et la manière de les traiter en programmation ? (ces notions
de compatibilité et décomposition, ça ne me dis rien du tout).

Merci.

C. Tobini
Avatar
Nicolas George
"ctobini" wrote in message
:
Sauriez-vous où je pourrais trouver des infos à la fois sur le codage
des caractères (ISO, Unicode, UTF8...), la différence entre ces
codages, et la manière de les traiter en programmation ? (ces notions
de compatibilité et décomposition, ça ne me dis rien du tout).


Pour la théorie sur les encodages, je vais faire ma propre pub :-) : <URL:
http://www.tuteurs.ens.fr/theorie/encodages.html >. Pour ce qui est des
notions plus avancées que j'ai évoquées dans ce thread, les documentations
du Consortium Unicode sont probablement un bon début. La FAQ <URL:
http://www.unicode.org/faq/ > est probablement le meilleur endroit pour
commencer.

Avatar
ctobini
Merci pour les liens, je vais les potasser ardemment :-)

Pour ce qui est de votre précédent post, sur le fait que pour de
nouveaux développement, l'iso-8859-1 est une mauvaise idée, c'est à
dire pour la portabilité ?

D'après ce que j'ai pu comprendre, l'UTF8 permettrait de coder les
caractères même spéciaux de manière 'portable', alors que le latin1
est 'limité' à l'Europe ?

C. Tobini
Avatar
Nicolas George
"ctobini" wrote in message
:
D'après ce que j'ai pu comprendre, l'UTF8 permettrait de coder les
caractères même spéciaux de manière 'portable', alors que le latin1
est 'limité' à l'Europe ?


Ce n'est pas dit de manière idéale, mais c'est ça l'idée. Dit plus
exactement :

Une donnée (fichier, flux réseau, etc.) textuelle encodée en ISO-8859-1 ( latin-1) ne peut contenir que les caractères des langues occidentales (et
encore, il va manquer quelques broutilles, style oe ou symbole euro) alors
qu'une donnée textuelle encodée en UTF-8 peut contenir à peu près tous les
caractères de toutes les langues du monde, et potentiellement au delà.

Dans ces conditions, quand on a le choix, il _faut_ choisir UTF-8.

Mais il peut arriver qu'on n'ait pas le choix, parce qu'on doit interagir
avec des logiciels existants qui sont incompatibles avec UTF-8. Dans ce cas,
il faut évidemment se résigner.

Il faut quand même noter qu'UTF-8 est conçu pour pouvoir passer presque
partout et limiter les incompatibilités.

Avatar
ctobini
Dans mon cas, je dois utiliser un soft qui n'accepte que le latin-1 en
entrée, d'où certains problèmes avec mes E/S dans Perl.

Merci encore pour tout et bonne journée.

C. Tobini
1 2