Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Encoder et décoder du texte

Date de publication : 27/02/2006

Par Vincent de Lachaux (Ingénieur programme)
 

Encoder, décoder en UTF8, UTF-7, ISO-8859-x, US-ASCII, cp1252, cp850,...


Produit : 4D 2004  ·  Plateforme : Mac, Win



Vous trouverez ci-dessous deux méthodes pour encoder/décoder en UTF-8 par défaut, mais également avec d'autres encodages ( UTF-7, ISO-8859-x, US-ASCII, cp1252, cp850...).

   ` ----------------------------------------------------
   ` Méthode : Encode_Text
   ` Créée le 24/02/06 par vdl
   ` ----------------------------------------------------
   ` Description
   ` Encode le Texte $1 avec l'encodage $2 (UTF-8 si $2 n'est pas présent)
   ` ----------------------------------------------------

C_TEXTE($1)
C_TEXTE($2)
C_TEXTE($0)

C_TEXTE($Txt_encoding;$Txt_Target;$Txt_Path;$Txt_Buffer)
C_BLOB($Blb_Buffer)
C_HEURE($Gmt_Doc)

$Txt_Target:=$1
Si (Nombre de parametres>1)
   $Txt_encoding:=$2
Fin de si

Si (Longueur($Txt_encoding)=0)
   $Txt_encoding:="UTF-8"
Fin de si

Si (Longueur($Txt_Target)>0)
   $Txt_Path:=Dossier temporaire+"encode.xml"
      Si (Tester chemin acces($Txt_Path)=Est un document )
         SUPPRIMER DOCUMENT($Txt_Path)
      Fin de si
   $Gmt_Doc:=Creer document($Txt_Path)
   Si (OK=1)
      SAX ECRIRE OPTIONS XML($Gmt_Doc;$Txt_encoding;Vrai;Faux)
      SAX OUVRIR ELEMENT XML($Gmt_Doc;"root")
      SAX AJOUTER VALEUR ELEMENT XML($Gmt_Doc;$Txt_Target)
      SAX FERMER ELEMENT XML($Gmt_Doc)
      FERMER DOCUMENT($Gmt_Doc)
      DOCUMENT VERS BLOB($Txt_Path;$Blb_Buffer)
      Si (OK=1)
         $Txt_Buffer:=BLOB vers texte($Blb_Buffer;Texte sans longueur )
         FIXER TAILLE BLOB($Blb_Buffer;0)
         $Txt_Buffer:=Sous chaine($Txt_Buffer;Position("<root>";$Txt_Buffer)+6)
         $Txt_Buffer:=Sous chaine($Txt_Buffer;1;Position("</root>";$Txt_Buffer)-1)
      Fin de si
      SUPPRIMER DOCUMENT($Txt_Path)
   Fin de si
Fin de si

$0:=$Txt_Buffer



   ` ----------------------------------------------------
   ` Methode : Decode_Text
   ` Creee le 24/02/06 par vdl
   ` ----------------------------------------------------
   ` Description
   ` Decode le Texte $1 encodé avec l'encodage $2 (UTF-8 si $2 est absent)
   ` ----------------------------------------------------

C_TEXTE($1)
C_TEXTE($2)
C_TEXTE($0)

C_TEXTE($Txt_encoding;$Txt_Target;$Txt_Path;$Txt_Buffer)
C_BLOB($Blb_Buffer)
C_HEURE($Gmt_Doc)

$Txt_Target:=$1
Si (Nombre de parametres>1)
   $Txt_encoding:=$2
Fin de si

Si (Longueur($Txt_encoding)=0)
   $Txt_encoding:="UTF-8"
Fin de si

Si (Longueur($Txt_Target)>0)
   $Txt_Target:=Remplacer chaine($Txt_Target;"&";"&") `et
   $Txt_Target:=Remplacer chaine($Txt_Target;"<";"<") `inférieur à
   $Txt_Path:=Dossier temporaire+"decode.xml"
   Si (Tester chemin acces($Txt_Path)=Est un document )
      SUPPRIMER DOCUMENT($Txt_Path)
   Fin de si
   $Gmt_Doc:=Creer document($Txt_Path)
   Si (OK=1)
      SAX ECRIRE OPTIONS XML($Gmt_Doc;$Txt_encoding;Vrai;Faux)
      ENVOYER PAQUET($Gmt_Doc;"<root><string>")
      ENVOYER PAQUET($Gmt_Doc;$Txt_Target)
      ENVOYER PAQUET($Gmt_Doc;"</string></root>")
      FERMER DOCUMENT($Gmt_Doc)
      $Txt_Root:=DOM Analyser source XML($Txt_Path;Faux)
      Si (OK=1)
         $Txt_Node:=DOM Chercher element XML($Txt_Root;"root/string")
         Si (OK=1)
            DOM LIRE VALEUR ELEMENT XML($Txt_Node;$Txt_Buffer)
            Si (OK=1)
               $Txt_Buffer:=Remplacer chaine($Txt_Buffer;"&";"&") `et
               $Txt_Buffer:=Remplacer chaine($Txt_Buffer;"<";"<") `inférieur à
            Fin de si
         Fin de si
      Fin de si
      SUPPRIMER DOCUMENT($Txt_Path)
   Fin de si
Fin de si

$0:=$Txt_Buffer



Valid XHTML 1.1!Valid CSS!

Copyright © 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique 4D