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.
"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...
"ctobini" wrote in message
<1138629707.336542.326260@g47g2000cwa.googlegroups.com>:
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...
"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...
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
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).
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
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.
"ctobini" wrote in message
<1138715382.779071.26660@o13g2000cwo.googlegroups.com>:
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.
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.
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
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 ?
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
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.
"ctobini" wrote in message
<1138725969.846005.207280@g49g2000cwa.googlegroups.com>:
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.
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.
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
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.