Décodage du format quoted-printable

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 429 fois - Téléchargée 26 fois

Contenu du snippet

Cette fonction permet le décodage du format quoted-printable, c'est à dire des mails qui ressembles à ça : d=E9sol=E9

Source / Exemple :


function QP_Decode(input)
{
	var s = input;	//l'entree
	var result = "";	//la sortie
	var hexa = "0123456789ABCDEF"; //les caracteres hexa autorisés (Majuscules seulement. cf RFC)

	while (s != "") //tant qu'il y a des caracteres dans l'entrée...
	{
		if (s.charAt(0) == '=')  //oups, besoin d'être decodé ...
		{
            
			if (s.length < 3 )	//est ce qu'il y a encore trois caractères...
				return result;	//erreur pendant le décodage, on renvoi ce qui à déjà été decodé...

			var mid = "";
			s = s.slice(1, s.length); //on supprime le signe '='  de l'entrée
				
     		mid = s.slice(0,2);		//on sauve le caractere sous sa forme hexadecimale
		    s = s.slice(2,s.length);	//on supprime le caractere hexadecimal  de l'entrée
		    
		    if (mid == "\r\n") {	//On vérifie si on a un saut de ligne
				result += mid;		//Oui, alors on l'ajoute à la sortie
			} else if ( hexa.indexOf(mid.charAt(0)) != -1 && hexa.indexOf(mid.charAt(1)) != -1  ) { //vérifie que le caractère est bien HexaDécimal
				var m = parseInt(mid,16);				//on le converti en base 10
				result += String.fromCharCode(m);	//on converti le code ASCII obtenu en caractère et on l'ajoute à la sortie
			} else {	//Le caractere n'est pas compris entre 00 et FF
				return result; //erreur pendant le décodage, on renvoi ce qui à déjà été decodé...
			}
		
		} else {	// Le caractère n'est pas un signe '=' on l'ajoute donc à la chaine 
		    result += s.charAt(0);	// on l'ajoute donc au résultat
		    s = s.slice(1,s.length);	// on enlève le caractère de l'entrée
		}
	}
return result;
}

Conclusion :


par exemple :

document.writeln( QP_Decode("=E9l=E9phant") );

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.