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


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.