Encoder et décoder du texte

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

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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;"&";"&amp;") `et
   $Txt_Target:=Remplacer chaine($Txt_Target;"<";"&lt;") `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;"&amp;";"&") `et
               $Txt_Buffer:=Remplacer chaine($Txt_Buffer;"&lt;";"<") `inférieur à
Fin de si
Fin de si
Fin de si
SUPPRIMER DOCUMENT($Txt_Path)
Fin de si
Fin de si

$0:=$Txt_Buffer

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.