Le passage d'un projet existant en UNICODE pour son exécution a été abordé dans un précédent billet, pour le cas des échanges entre différentes plate-formes :


Mais indépendamment des échanges de données entre, par exemple, un webservice et une application sous Android ou iOS, des cas similaires peuvent se produire tout en restant sur une plate-forme unique. Voici un exemple abordé ce jour dans une demande reçue par notre support :

  • une application WINDEV exécutée sous Windows avait initialement ses chaînes en exécution en ANSI.
  • cette application avait des données cryptées mémorisées sur disque dans des fichiers. Exemple :

    sDonnées est une chaîne = "contenu crypté"
    sPasse est une chaîne = "motpasse"
    Cryptage est un Buffer
    Cryptage = Crypte(sDonnées, sPasse,crypteSécurisé,encodeAucun)
    fSauveBuffer("c:\démo.txt",Cryptage)

  • pour son internationalisation cette application a été recompilée en UNICODE


  • le traitement initial de décryptage des données reste parfaitement opérationnel :

    s
    Passe est une chaîne = "motpasse"
    Cryptage est un Buffer
    Cryptage = fChargeBuffer("c:\démo.txt")
    Info(Décrypte(Cryptage, sPasse,crypteSécurisé,encodeAucun))

  • cependant l'affichage des données ne donne plus le résultat attendu, puisque l'application est configurée pour afficher de l'UNICODE.
  • la solution consiste donc pour retrouver l'information initiale à "forcer" l'application à utiliser l'ANSI pour montrer les données. Par exemple :
    Info(AnsiVersUnicode(Décrypte(Cryptage, sPasse,crypteSécurisé,encodeAucun),alphabetAnsi))

    ou :

    sDonnées est une chaîne ANSI = Décrypte(Cryptage, sPasse,crypteSécurisé,encodeAucun)
    Info(sDonnées)


< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée