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

  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.

  2. #2
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Je n'ai pas encore eu l'occasion de tester les nouvelles versions. Mais je dirais que si on veut faire de l'UTF8 il faut utiliser LazUTF8 avec les nouvelles versions.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Rémi,

    Sauf
    • que comme il est précisé, ce n'est "qu'en attendant", pour revenir plus tard aux bibliothèques actuelles dont il est implicitement précisé que ces dernières ne donnent pas toujours satisfaction car "elles ne sont pas prêtes",
    • que je n'arrive pas à déterminer quelle est interaction exacte -s'il y en a une- entre le fait que la RTL et la FCL de FPC attendent des chaines ANSI et mon incapacité à partir de l'UTF8 comme base de travail.


    J'avoue que j'ai du mal à suivre. La révolution de la 0.9.26 c'est justement la prise en charge de l'UFT8 de "manière native"...
    Unicode: Win32 widgetset and LCL in general are adopted to support only utf8 strings. Whatever you do with strings returned and passed from/to controls please know they are in utf8 encoding now.
    Source officielle
    Pour la LCL, c'est "en cours" et il est vrai que cela fonctionne mieux.. même si en ce qui concerne les composants, il est nécessaire de rester attentif. Mais pour le reste ? On ne peut pas se restreindre à l'usage de la LCL dans une application. Le problème devient sensible quand on développe en Win et en Nux. Les bibliothèques gérant les UTF8 ne sont pas simples d'accès (ie compréhensibles)... quand on pense à les appeler...

    Donc finalement, ne vaut-il mieux pas attendre la vraie gestion... ce qui promet un retard considérable compte tenu du déverminage nécessaire par les utilisateurs... et de continuer à batailler "ferme" avec les SysToUTF8, les UTF8Encode et de différencier en permanence les variables pour préciser leur genre ? Bon, on a l'habitude... et quand on n'aura plus ce problème, cela nous manquera... un peu

    Cordialement. Gilles
    Dernière modification par Invité ; 05/03/2012 à 17h29. Motif: Reformulation

  4. #4
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par selzig Voir le message
    Donc finalement, ne vaut-il mieux pas attendre la vraie gestion... ce qui promet un retard considérable compte tenu du déverminage nécessaire par les utilisateurs... et de continuer à batailler "ferme" avec les SysToUTF8, les UTF8Encode et de différencier en permanence les variables pour préciser leur genre ?
    Moi je suis pour attendre que ça soit mure. Quitte à gérer les problèmes de la manière habituelle.

    Citation Envoyé par selzig Voir le message
    Bon, on a l'habitude... et quand on n'aura plus ce problème, cela nous manquera... un peu
    Mais non il y aura d'autres problèmes pour les remplacer. Faut pas s'inquiéter
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

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