Problème de décodage des caractères après lecture d’un cookie (asp.net)

Voici un problème que j’ai mis quelques temps à résoudre :

J’enregistre une donnée dans un cookie à l’aide de l’instruction javascript suivante :

function createCookie(name, value, days) {

    if (days) {

        var date = new Date();

        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));

        var expires = « ; expires= » + date.toGMTString();

    }

    else var expires = «  »;

    document.cookie = name + « = » + value + expires + « ; path=/ »;

}

Je lis cette donnée depuis asp.net côté server par l’instruction suivante :

Request.Cookies[name].Value;

Et voilà que les accents et autres caractères français sont mal décodés.

J’ai donc ajouté cette fonction :

private string Decoder(string valeur)

{

        byte[] temp;

        temp = System.Text.Encoding.GetEncoding(« UTF-8 »).GetBytes(valeur);

        temp = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(« UTF-8 »), System.Text.Encoding.GetEncoding(« ISO-8859-1 »), temp);

        return System.Text.Encoding.UTF8.GetString(temp);

}

Ce qui transforme mon instruction de lecture asp.net en :

Decoder(Request.Cookies[name].Value);

Et là ça marche même avec un serveur anglais.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *