Quoted Printable

Algorithme utilisé par Up ! System

L'algorithme Quoted Printable de l'Internet Engineering Task Force (IETF) permet d'encoder un flux binaire en un flux texte en écrivant les octets ne correspondant pas à des caractères usuels en hexadécimal.

Son principe est le suivant :

La taille de la ligne ne doit pas dépasser 76 caractères une fois encodée. Une ligne non encodée peut être découpée en plusieurs lignes encodées dont les premières se terminent par les caractères égal =, saut de ligne \n et retour chariot \r non encodés.

Le saut de ligne est représenté par les deux caractères successifs saut de ligne \n et retour chariot \r non encodés et non précédés du caractère égal =.

Exemple d'un flux encodé l'algorithme Quoted Printable

Flux non encodé

/* ------------------------------------------------------------------- */ /* Fichier : clientftp.upl */ /* Objet : Exemple d'emploi d'Up ! Network. */ /* */ /* Module : Up ! Application System. */ /* Auteur-Date : DUVAL Jean-Pierre - Novembre 2003. */ /* ------------------------------------------------------------------- */ /* Observations */ /* */ /* */ /* ------------------------------------------------------------------- */ Source Composant "Exemple d'emploi d'Up ! Network" Version 4.0.0; ImporterModule UpsFts(, ImporterDefinitions); Variable /******/ MonServeur : Nul Ou ServeurFtp; Principal /*******/ Debut MonServeur=ServeurFtp("ftp://local:21"); MonServeur.ChangerConnexion("anonymous", "contact@mon-domaine.com"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesAscii); CopierFichier("C:/tmp2/essai.txt", "ftp://local:21/tmp/essai.txt"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesImage); CopierFichier("ftp://local:21/tmp/essai.doc", "C:/tmp2/essai.doc"); MonServeur=Nul; Fin Principal

Flux encodé

/*=20-------------------------------------------------------------------=20= */ /*=20Fichier=20=20=20=20:=20clientftp.upl=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20*/ /*=20Objet=20=20=20=20=20=20:=20Exemple=20d'emploi=20d'Up=20!=20Network.=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20*/ /*=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20*/ /*=20Module=20=20=20=20=20=20:=20Up=20!=20Application=20System.=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= */ /*=20Auteur-Date=20:=20DUVAL=20Jean-Pierre=20-=20Novembre=202003.=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20*/ /*=20-------------------------------------------------------------------=20= */ /*=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20Observations=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20*/ /*=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20*/=20 /*=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20*/=20 /*=20-------------------------------------------------------------------=20= */ Source=20Composant=20"Exemple=20d'emploi=20d'Up=20!=20Network"=20Version=20= 4.0.0; ImporterModule=20 =20=20=20UpsFts(,=20ImporterDefinitions); Variable /******/ =20=20=20MonServeur=20:=20Nul=20Ou=20ServeurFtp; Principal /*******/ Debut MonServeur=3DServeurFtp("ftp://local:21"); MonServeur.ChangerConnexion("anonymous",=20"contact@mon-domaine.com"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesAscii); CopierFichier("C:/tmp2/essai.txt",=20"ftp://local:21/tmp/essai.txt"); MonServeur.ChangerEtatTypeDonnees(TypeDonneesImage); CopierFichier("ftp://local:21/tmp/essai.doc",=20"C:/tmp2/essai.doc"); MonServeur=3DNul; Fin=20Principal