IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Encodage du lien


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut Encodage du lien
    Bonjour tout le monde,

    Je suis dans une application mobile et mon problème est que je n'arrive pas a récupérer correctement le body et subject d'un template SMS. C'est lié à l'encodage.

    voila le code de la fonction JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function createSMS(){
    	var phoneNumber = document.getElementById("SMS").innerHTML;
            var subject = encodeURIComponent(document.getElementById("initSubject").innerHTML);
            var body = subject+'\n'+encodeURIComponent(document.getElementById("initBody").innerHTML);
            window.location ="sms:"+phoneNumber+"&body=+body;
    }
    Le "SMS" c'est numéro de téléphone du contact coté controleur.

    Si je suis choisi un template qui contient "Hello" comme subject et "Bienvenu sur notre site" comme body ==> j'ai le résultat suivant dans ma section SMS de mon téléphone Hello,Bonjour%20sur%20notre%20site.

    Je me dis que je dois faire un fonction Regex comme celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function encodeISO8859 (str) {
        var rstr="";
        for(var i=0; i<str.length; i++) {
            var c = str.charCodeAt(i);
            if(c>191&&c<=255&&!(c==215||c==247)){
                console.log(c);
                rstr += "&#"+c+";";
           } else {
               rstr += str.charAt(i);
           }
        }
        return rstr;
    }
    est changer la fonction CreatSMS par cella-la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function createSMS(){
        logTask(document.getElementById("initSubject").innerHTML);
        var phoneNumber = document.getElementById("SMS").innerHTML;
        var subject = encodeURIComponent(encodeISO8859(document.getElementById("initSubject").innerHTML));
        var body = subject+'\n'+encodeISO8859(encodeURIComponent(document.getElementById("initBody").innerHTML));
        window.location ="sms:"+phoneNumber+"&body=+body";
    }
    Merci d'avance à tous et à toutes

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut
    Si je comprend bien tu veux dé-URL-iser une chaine de caractere que tu récupère ? Pour simplifier ton code tu n'aurai pas intéret à utiliser decodeURI ? pour faire l'operation inverse de encodeUri ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Salut 4urelien.jo,

    Merci pour ta réponse.Au fait, j'ai suivi ce que tu as dis;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function createSMS(){
     	    logTask(document.getElementById("initSubject").innerHTML);
     		var phoneNumber = document.getElementById("SMS").innerHTML;
            var subject = document.getElementById("initSubject").innerHTML;
            var body = encodeURIComponent(document.getElementById("initBody").innerHTML);
     
            window.location ="sms:"+phoneNumber+"?body="+decodeURIComponent(body);
        }
    En testant avec un body qui contient les caractères spéciaux suivants : - * % : ; , . ( ) [ ] ! _

    Comme résultat, tout va bien sauf les carractères : % =>%25 , %=>%25 , :=> %3A, %3B=>;
    %5D=> ] , %5B=>[ , %20=> espace vide

    je ne sais pas comment implémenter, replace(" ", "%20") , ... en une seule fonction tout en conservant le DecodeURIComponent. Bon je crois que c'est ça la réponse

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut
    J'avais créé une fonction pour faire ca pour les espaces mais je ne la retrouve plus, j'etais parti d'un bout de code de stackoverflow

    La solution bete et mechante est de prendre ton body et de lui faire subir tous les remplacements a la suite... Il doit y avoir plus malin mais la tout de suite je ne vois pas

    Si tu trouves une meilleure solution partage

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Moi je suis parti sur ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function encodeAnotherValueChars (body) {
        return decodeURIComponent(body).replace(/\%/g, '%25');
     
    }
    est je l'appelle comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     window.location ="sms:"+phoneNumber+"?body="+encodeAnotherValueChars(body);
    Mais ca ne marche pas :

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Par défaut
    Tiens deja je sais pas si tu connais mais ce site est vraiment bien des qu'on a besoin de regex : http://www.regexr.com/

    Ensuite a quel niveau ca ne fonctionne pas ? Au niveau de la regle d'exception ou au niveau du remplacement ? Si tu as un message d'erreur ou un exemple de ce que devrait ecrire ton script poste le

Discussions similaires

  1. URI Encoding - encodage automatique des liens
    Par raphpell dans le forum Apache
    Réponses: 16
    Dernier message: 07/05/2008, 15h48
  2. [FLASH 5] Comment créer un lien hypertexte
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2006, 12h26
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo