- 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;
- }
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;
}