Encoder et décoder du texte

Vincent de Lachaux

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

- Titre : Encoder et décoder du texte

- Auteur : Vincent de Lachaux

- Parution : 27 février 2006

- Licence : 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.

Sommaire

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...).

1. ` ----------------------------------------------------

2. ` Méthode : Encode_Text

3. ` Créée le 24/02/06 par vdl

4. ` ----------------------------------------------------

5. ` Description

6. ` Encode le Texte $1 avec l'encodage $2 (UTF-8 si $2 n'est pas présent)

7. ` ----------------------------------------------------

9. C_TEXTE($1)

10. C_TEXTE($2)

11. C_TEXTE($0)

13. C_TEXTE($Txt_encoding;$Txt_Target;$Txt_Path;$Txt_Buffer)

14. C_BLOB($Blb_Buffer)

15. C_HEURE($Gmt_Doc)

17. $Txt_Target:=$1

18. Si (Nombre de parametres>1)

19. $Txt_encoding:=$2

20. Fin de si

22. Si (Longueur($Txt_encoding)=0)

23. $Txt_encoding:="UTF-8"

24. Fin de si

26. Si (Longueur($Txt_Target)>0)

27. $Txt_Path:=Dossier temporaire+"encode.xml"

28. Si (Tester chemin acces($Txt_Path)=Est un document )

29. SUPPRIMER DOCUMENT($Txt_Path)

30. Fin de si

31. $Gmt_Doc:=Creer document($Txt_Path)

32. Si (OK=1)

33. SAX ECRIRE OPTIONS XML($Gmt_Doc;$Txt_encoding;Vrai;Faux)

34. SAX OUVRIR ELEMENT XML($Gmt_Doc;"root")

35. SAX AJOUTER VALEUR ELEMENT XML($Gmt_Doc;$Txt_Target)

36. SAX FERMER ELEMENT XML($Gmt_Doc)

37. FERMER DOCUMENT($Gmt_Doc)

38. DOCUMENT VERS BLOB($Txt_Path;$Blb_Buffer)

39. Si (OK=1)

40. $Txt_Buffer:=BLOB vers texte($Blb_Buffer;Texte sans longueur )

41. FIXER TAILLE BLOB($Blb_Buffer;0)

42. $Txt_Buffer:=Sous chaine($Txt_Buffer;Position("<root>";$Txt_Buffer)+6)

43. $Txt_Buffer:=Sous chaine($Txt_Buffer;1;Position("</root>";$Txt_Buffer)-1)

44. Fin de si

45. SUPPRIMER DOCUMENT($Txt_Path)

46. Fin de si

47. Fin de si

49. $0:=$Txt_Buffer

53. ` ----------------------------------------------------

54. ` Methode : Decode_Text

55. ` Creee le 24/02/06 par vdl

56. ` ----------------------------------------------------

57. ` Description

58. ` Decode le Texte $1 encodé avec l'encodage $2 (UTF-8 si $2 est absent)

59. ` ----------------------------------------------------

61. C_TEXTE($1)

62. C_TEXTE($2)

63. C_TEXTE($0)

65. C_TEXTE($Txt_encoding;$Txt_Target;$Txt_Path;$Txt_Buffer)

66. C_BLOB($Blb_Buffer)

67. C_HEURE($Gmt_Doc)

69. $Txt_Target:=$1

70. Si (Nombre de parametres>1)

71. $Txt_encoding:=$2

72. Fin de si

74. Si (Longueur($Txt_encoding)=0)

75. $Txt_encoding:="UTF-8"

76. Fin de si

78. Si (Longueur($Txt_Target)>0)

79. $Txt_Target:=Remplacer chaine($Txt_Target;"&";"&amp;") `et

80. $Txt_Target:=Remplacer chaine($Txt_Target;"<";"&lt;") `inférieur à

81. $Txt_Path:=Dossier temporaire+"decode.xml"

82. Si (Tester chemin acces($Txt_Path)=Est un document )

83. SUPPRIMER DOCUMENT($Txt_Path)

84. Fin de si

85. $Gmt_Doc:=Creer document($Txt_Path)

86. Si (OK=1)

87. SAX ECRIRE OPTIONS XML($Gmt_Doc;$Txt_encoding;Vrai;Faux)

88. ENVOYER PAQUET($Gmt_Doc;"<root><string>")

89. ENVOYER PAQUET($Gmt_Doc;$Txt_Target)

90. ENVOYER PAQUET($Gmt_Doc;"</string></root>")

91. FERMER DOCUMENT($Gmt_Doc)

92. $Txt_Root:=DOM Analyser source XML($Txt_Path;Faux)

93. Si (OK=1)

94. $Txt_Node:=DOM Chercher element XML($Txt_Root;"root/string")

95. Si (OK=1)

96. DOM LIRE VALEUR ELEMENT XML($Txt_Node;$Txt_Buffer)

97. Si (OK=1)

98. $Txt_Buffer:=Remplacer chaine($Txt_Buffer;"&amp;";"&") `et

99. $Txt_Buffer:=Remplacer chaine($Txt_Buffer;"&lt;";"<") `inférieur à

100. Fin de si

101. Fin de si

102. Fin de si

103. SUPPRIMER DOCUMENT($Txt_Path)

104. Fin de si

105. Fin de si

107. $0:=$Txt_Buffer