Journal Locales et charset

Posté par .
Tags : aucun
0
15
avr.
2004
Bonjour,

depuis le temps que j'utilise linux, il y a un truc que je n'ai jamais bien compris, c'est les charset. Actuellement ma debian sid est configuré en ISO-8859-15 mais j'aimerai la reconfiguré en UTF-8. J'ai donc fait ça avec localeconf. Le pb est que tout les fichiers que j'avais avant ont des pbs avec les caractères accentués soit dans leur corps soit dans leur nom. Ceci doit pouvoir se régler en écrivant un script (à faire tourner que ds $HOME et ds quelques autres répertoires). Est-ce une bonne idée ? Y-a t-il des pbs connus avec l'UTF-8 ? Est-ce que certaines applications pourraient mal le gérer ? Y-a t'il d'autres choses à configurer ? Quels sont les éventuels pbs de compatibilités avec les autres OS ?

Merci de me faire part de vos expériences.
  • # Re: Locales et charset

    Posté par . Évalué à 0.

    Pour renommer facilement :
    man tr
    • [^] # Re: Locales et charset

      Posté par . Évalué à 1.

      je dirais plutôt :
      man luit
      man iconv

      Il y a aussi recode, mais qui ne doit pas être sous toutes les ditribs et dont on parle plus bas, et il y aura bientôt utrac qui fera de la reconnaissance de charset, mais ce n'est pas encore pour aujourd'hui...
  • # Re: Locales et charset

    Posté par . Évalué à 4.

    le problème de l'unicode est effectivement pas rétro-compatible avec les anciens codages tel l'iso-8859-15.
    Le problème étant qu'un caractère peut etre codé sur plusieurs octets, ce qui laisse perplexe certains logiciels un peu anciens.

    Mais j'emploie le terme "retro-compatible" à dessein car l'Unicode représente une évolution nécessaire qui corrige une erreure fondemmentale qui s'est glissée partout d'un l'informatique de nos ancetres (Je m'applati devant eux pour tout ce qu'ils ont fait d'autres, mais sur ce point, ils se sont bien plantés !)
    Postulat étrange qui dirait qu'en informatique, un fichier ne peut etre rédigé que dans une seule et unique langue !

    Tous ceux qui s'interressent aux langues n'utilisant pas lalphabet latin me comprennent et bénissent l'Unicode !

    Donc oui, tu croisera quelques petits comportements étranges, mais de mois en moins (toutes les appli majeures sont en train d'y passer où y sont depuis longtemps, exemple : aucun problème avec tout ce qui utilise GTK2 ). Mais c'est un passage à faire qui sur le long terme rendra le monde plus beau !

    Enfin, pour répondre à ta question, le programme "recode" est ton ami pour retrouver tes anciens fichier sous une forme lisible.

    (note : pour le nom des fichiers, il me semble qu'avoir un filesystem en UTF-8 est une option du noyau, à confirmer)
    • [^] # Re: Locales et charset

      Posté par . Évalué à 3.

      > mais sur ce point, ils se sont bien plantés !

      manifestement tu n'a pas connu l'epoque où l'espace disque et plus encore l'espace memoire etaient hors de prix et où tout etait bon pour gratter quelques ko.
      • [^] # Re: Locales et charset

        Posté par . Évalué à 2.

        D'où, également, le problème des dates codées sur 2 chiffres et le problème au passage à l'an 2000
        • [^] # Re: Locales et charset

          Posté par . Évalué à 2.

          Ça, c'était l'explication bidon pour récolter des thunes auprès des commerciaux et réengager des programmeurs cobol à la retraite depuis 15 ans qui voulaient se payer un petit voyage. La vrai explication, c'est que il y a des boulets qui ont codé ces dates en BCD et qui ont ramené à l'an 2000 un problème qui n'aurait dû apparaître qu'en 2156. C'est ça la philosophie de la conception haut niveau, ce n'est pas le programmeur qui doit se mettre au niveau de la machine, mais le contraire, et tant pis si la machine n'y arrive pas.

          « Il n'y a que 10 types de personnes au monde : ceux qui comprennent le binaire et ceux qui ne le comprennent pas.»
    • [^] # Re: Locales et charset

      Posté par (page perso) . Évalué à 1.

      Il me semble avoir entendu que le problème avec l'unicode, c'est qu'il manque de la place pour réélement tout mettre...
      Je crois que si on compte tout les idéogrammes chinois on doit déjà approcher les 50 000. Pour le Japonais, c'est 20 000 sûr.
      On doit y trouver les caractères les plus courants, dans les langues les plus connues, plus quelques trucs totalement inutile comme certains symboles mathématique inutilisable dans des fichiers textes, comme l'intégrale...

      Quelqu'un pour confirmer / infirmer ?
      • [^] # Re: Locales et charset

        Posté par . Évalué à 1.

        En fait l'unicode ça veut dire pas mal de chose...
        - en valeur scalaire, ça va de 0 à 0x10FFFF et ça peut coder tout ce qu'on veut (même les alphabets de tolkien, et il reste encore beaucoup de place)
        - ensuite pour le coder, on a l'utf-8, l'utf-16 ou l'utf-32, avec les deux premiers où un caractère peu être codé sur plusieurs mots.
        - et en interne ça va dépendre des systèmes : unix à des wchar_t sur 4 octets, windows sur 2, et gtk va faire de l'utf-8. Chacun à ses défauts et ses avantages.

        Sinon, je crois qu'effectivement, il y avait une époque où l'unicode ne dépassait pas 0xFFFF et ça posait donc problème pour certaines langues, mais maintenant qu'on est passé à 32 bits, on ne devrait plus avoir de problème pendant un moment... à moins de découvrir l'atlantide ou je ne sais quelle civilisation perdue et ses 234x10^56 caractères...
  • # Un avertissement et une idée pour un monde meilleur

    Posté par . Évalué à 1.

    Ça fait un bout de temps que je fais mes installs de Mandrake en sélectionnant unicode au tout premier panneau. Tu verras qu'il se passe des trucs bizarres pour tes backups sur CD au format rockridge. La seule solution à court terme que j'ai trouvé est de faire des sauvegardes au format joliet, mais je perds les droits de lecture/écriture. La solution sur le long terme devrait être l'usage du format UDF (conçu pour les DVDs, mais devrait être utilisable aussi pour les CDs). Ce n'est pas pour autant que je renoncerait à l'unicode à tous les étages, mais il y a encore de grosses difficultés.

    Sinon, une idée en passant : le charset n'est pas précisé dans le système de fichier. C'est pour ça que tu as des «truc bizarres». Je pense qu'il serait plus que temps que :
    1)Pour chaque système de fichier, si cela est pertinent, le processus d'installation devrait chercher à déterminer quel charset a bien pu être utilisé, quitte à permettre une correction manuelle par derrière.
    2)Pour chaque système de fichier, on devrai avoir le choix du charset. Et quand on changerait, un script ferait automatiquement les transformations nécessaires de manière transparente.
  • # Re: Locales et charset

    Posté par . Évalué à 2.

    Pour renomer les fichiers de iso-8859-15 vers Unicode. Marche également en recursif dans les repertoires. A utiliser avec précaution tout de meme, j'ai constaté quelques problemes parfois (renomage des fichiers et pas des repertoires par exemple).

    http://ccomb.free.fr/utfconvert/utfconvert.py(...)

    Pour le contenu des fichiers, utiliser :
    recode iso8859-15..utf8 mon.fichier.texte

    Attention à ne pas convertir à tour de bras n'importe quoi, comme les fichiers XML ou Python qui on une déclaration du charset utilisé dans leur entete de fichier.

    Pour les problemes, je n'ai pas réussi à faire marche GNUCash et Acroread en locale UTF8. J'ai donc fait pour les deux un script lanceur dans ~/bin afin de changer la locale avant de les lancer.

    Pour samba, j'ai ajouté la ligne suivante dans la section [general] pour pas qu'il y ait de problemes :

    dos charset=ISO8859-15

    Et penser, à l'écran de connexion GDM (si tu l'utilise), de bien choisir dans le menu "Langues" ta locale UFT8 préférée, sinon les applications que tu lancera via les menus ne seront pas en locale UTF8.

    Sinon, bien sur, dans .bashrc et compagnie, définir aussi la locale comme il faut.
  • # Re: Locales et charset

    Posté par (page perso) . Évalué à -1.

    Espèce de malade !
    Tout marche bien, mais non faut que tu cherches les problèmes.
    Vu le bordel que c'est cette histoire d'encodage de fichiers,
    je te souhaite bien du courage.

    un developpeur qui maudit les problèmes d'encodage.
  • # Re: Locales et charset

    Posté par . Évalué à 1.

    Merci à tous,

    il y a qd meme une chose que je ne comprends toujours pas. C'est l'implication du charset ds le systèmes de fichier. Possède-t-il un charset lui aussi ? Peut-on le définir ? Si je veux renommer mes fichiers, dois-je changer une option ou lancer un script qui fait le renommage. J'utilise reiserfs, pas de pb particuliers avec l'unicode ?
    • [^] # Re: Locales et charset

      Posté par . Évalué à 1.

      Toute chaîne de caractère est forcement écrite dans un charset particulier, et donc le FS qui doit gérer les noms de fichiers en possède aussi un! Par contre il est possible qu'il ne le gère pas...

      En pratique, il n'y a pas de problème lorsque le texte ne contient pas de caractères accentués ou signes spéciaux (çad de carctères dont le code est inférieur à 128) car pratiquement tous les charsets utilisés aujourd'hui possède un partie commune entre 0 et 127 correspondant à l'US-ASCII.

      En interne, le FS ne se soucie pas du charset utilisé, pour lui un octet est un octet et peu importe que 0xE8 corresponde à un 'é', un 'ä' ou un demi 'Ç'. L'unique problème sera l'affichage et la saisie de noms de fichiers.

      Je ne sais pas quel est le charset par défaut pour reseir/ext2/ext3. Je pense qu'il ne doit pas y en avoir et que ça doit plus dépendre du shell ou des commandes que du FS lui même. Il y a bien des options pour certains FS, mais pas pour ceux là. Je pense que la meilleur option est de ne pas utiliser d'accent en attendant qu'il y ai moins de conflits entre les différents programmes...
      • [^] # Re: Locales et charset

        Posté par . Évalué à 2.

        > «Je pense que la meilleur option est de ne pas utiliser d'accent en attendant qu'il y ai moins de conflits entre les différents programmes...»

        Je pense au contraire qu'il faut s'en donner à c?ur joie et faire les rapports de bugs en conséquence. On ne peut espérer d'avoir un système totalement unicode que si :
        1)les gens l'utilisent. Si personne ne l'utilise, les développeurs ne vont jamais considérer que c'est une priorité.
        2)le support est correct, et pour cela il faut détecter les bugs, et donc il faut l'utiliser.

        Pour le point 1, ça me fait penser à ceux qui utiliseront l'ogg vorbis quand même leur auto-radio saura le lire, mais on ne risque pas de voir d'auto-radio ogg vorbis si personne ne l'utilise...
  • # Tout ce qu'un développeur doit impérativement connaitre de l'Unicode

    Posté par . Évalué à 1.

    http://www.joelonsoftware.com/articles/Unicode.html(...) : un bon petit texte explicatif sur les jeux de caractères. Ca ne parle pas du tout de linux, des systèmes de fichiers, mais par contre de bonnes bases pour trouver des solutions à tes problèmes
  • # Re: Locales et charset

    Posté par (page perso) . Évalué à 1.

    La seule grosse appli qui supporte tres mal l'unicode c'est emacs :(
    A moins que cela est bcp bougé dernierement (ie - 1 ans) c'est pas la panacée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.