IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

UTF8 et ANSI : quelle stratégie avec Lazarus/FreePascal ?


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut UTF8 et ANSI : quelle stratégie avec Lazarus/FreePascal ?
    Bonjour,

    je suis de plus en plus perplexe dans le gestion de la combinaison UTF8/ANSI avec le couple Lazarus/FreePascal. Et les "nouveautés" n'arrangent rien.

    J'ai travaillé quelques heures sur un système de cryptage réversible compatible Win et Nux... Si je me sers de l'ANSI comme base, c'est portable sauf à l'affichage dans certains objets visuels... où il faut jouer de l'UTF8Encode(...).

    Mais si je veux faire l'inverse, c'est-à dire prendre comme base l'UTF8, je n'arrive à rien... pas plus avec Lazarus 0.9.31/FPC 2.6.1 que quand j'avais fait un essai en Lazarus 0.9.28/FPC 2.2 ou 2.4.

    J'en arrive à me demander si c'est jouable ? Et comment ? Depuis pas mal de temps déjà, il faut assez lourdement différencier l'écriture entre les environnements avec des objets qui réagissent différemment à l'affichage selon leur hétérogénéité de conception...
    Même si Lazarus possède des ensembles de widgets Unicode, il est important de noter que tout n'est pas en Unicode. Il est de la responsabilité du développeur de connaitre l'encodage de ses chaines de caractère, et d'effectuer la conversion appropriée entre les bibliothèques qui attendent des encodages différents.
    ...sans compter...
    La RTL et la FCL de FPC 2.4 attendent des chaines ANSI. FPC 2.5.x aussi actuellement.
    Vous pouvez convertir entre unicode et ansi en utilisant les fonctions UTF8ToAnsi et AnsiToUTF8 de l'unité System, ou les fonctions UTF8ToSys et SysToUTF8 de l'unité FileUtil. Les deux dernières sont plus intelligentes mais engendrent plus de code dans votre programme.
    Changer de librairie en attendant ?

    Jusqu'à Lazarus 0.9.30, les routines de gestion de l'UTF-8 étaient dans la LCL dans l'unité LCLProc. Dans Lazarus 0.9.31 (et supérieur), les routines de LCLProc sont toujours disponibles pour la compatibilité ascendante, mais le vrai code (the real code dans la page anglaise que l'on peut supposer d'origine) qui gère UTF-8 est localisé dans le package lazutils, dans l'unité lazutf8.

    Pour exécuter des opérations sur des chaines UTF-8, il est préférable d'utiliser les routines de l'unité lazutf8 plutôt que celles de SysUtils de Free Pascal, car SysUtils n'est pas encore prêt à travailler avec Unicode, alors que lazutf8 l'est. Substituez simplement les routines de SysUtils avec leur équivalent lazutf8, qui ont toujours le même nom exception faite du préfixe "UTF8" ajouté.
    "Le vrai code ?" Est-ce que quelqu'un a une stratégie de développement en la matière ? LazUTF8 ? La RTL et la FCL restent en ANSI... Wait and see : trop tôt pour utiliser comme base UTF8 ?

    Merci. Cordialement. Gilles
    Dernière modification par Invité ; 03/03/2012 à 20h47.

Discussions similaires

  1. [Lazarus] Comment créer une DLL avec Lazarus
    Par rajawi00 dans le forum Lazarus
    Réponses: 1
    Dernier message: 19/07/2007, 13h49
  2. UML : quelle relation avec les SGBD ?
    Par startin dans le forum UML
    Réponses: 8
    Dernier message: 10/04/2007, 10h54
  3. Réponses: 4
    Dernier message: 04/04/2006, 19h19
  4. Réponses: 4
    Dernier message: 30/12/2004, 18h04
  5. Réponses: 4
    Dernier message: 17/05/2004, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo