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 :

Gérer le codage charset d'un lien A avec du data


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 410
    Points : 870
    Points
    870
    Par défaut Gérer le codage charset d'un lien A avec du data
    bonjour,

    j'ai un ptit problème de charset.
    je souhaite fournir du contenu utf8 data dans un lien A.

    je le fais par ce biais en javascript (je peux pas le faire en export serveur donc je constuit le fichier .txt via le javascript que je transmet donc en lien a; ça évite en plus un accès serveur) :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var icsMSG="BEGIN:VCALENDAR\nVERSION:2.0\nX-WR-CALNAME:EDT test\nNAME:Emploi du temps test\nPRODID:ENT-test\nCALSCALE:GREGORIAN\nMETHOD:PUBLISH\nX-WR-TIMEZONE:Europe/Paris\nX-WR-CALDESC:description agenda\n";
    icsMSG=icsMSG + grossechaine;
    icsMSG=icsMSG + "END:VCALENDAR";
    icsMSG="data:text/calendar;charset=utf8," + escape(icsMSG);
    $(".lienICS").attr("href", icsMSG);




    ma page html contient bien les 2 balises meta suivantes :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <meta charset="utf-8">
    <META http-equiv="Content-Type" content="text/html; charset=utf-8" />

    et mon lien que j’alimente par le javascript est basique (donc forcément en utf8 car i hérite des méta ) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div><a download='emploi_du_temps_TEST' class='lienICS '> [ CLIQUEZ ICI pour obtenir votre export calendrier ]</a></div>

    Le fichier se télécharge très bien quand on clique mais il est en iso8859-1 et je ne comprends pas pourquoi ?! je fais pourtant l'escape ET le charset utf8 !

    qu'est-ce que j'ai manqué ?

    j'ajoute un script fonctionnel si vous voulez tester , j'ai remplacé le jquery par du pur dom et j'ai mis un exemple pièce jointe avec une chaine accentuée . moi ça exporte en iso et pas utf8, je comprends pas pourquoi....



    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <html>
    <head>
    <meta charset="utf-8">
    <META http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <div><a id="lienICS" download='emploi_du_temps_TEST' class='lienICS '> [ CLIQUEZ ICI pour obtenir votre export calendrier ]</a></div>
    </body>
    <script>
    var grossechaine="BEGIN:VEVENT\nUID:me@google.com\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:me@gmail.com\nORGANIZER;CN=Me:MAILTO::me@gmail.com\nDTSTART:9:30am\nDTEND:10:30am\nSUMMARY:étudiant accentué \nEND:VEVENT";
    var icsMSG="BEGIN:VCALENDAR\nVERSION:2.0\nX-WR-CALNAME:EDT test\nNAME:Emploi du temps test\nPRODID:ENT-test\nCALSCALE:GREGORIAN\nMETHOD:PUBLISH\nX-WR-TIMEZONE:Europe/Paris\nX-WR-CALDESC:description agenda\n";
    icsMSG=icsMSG + grossechaine;
    icsMSG=icsMSG + "END:VCALENDAR";
    icsMSG="data:text/calendar;charset=utf8," + escape(icsMSG);
    //$(".lienICS").attr("href", icsMSG);
    document.getElementById("lienICS").href=icsMSG;
    </script>
    </html>
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 410
    Points : 870
    Points
    870
    Par défaut
    j'ai lu mais l'article ne parle pas du cas des POST/GEtT par lien ou par formulaire sans passage par serveur (c'est mon cas, regardez la pièce attachée que j'ai ajouté après votre commentaire).

    dites moi si je me trompe mais quand on clique sur un lien A contenant data:text , le serveur ne travaille pas, aucun accès, c'est direct. d'ailleurs mon exemple en pièce attachée fonctionne sans serveur, c'est 100% client.

  4. #4
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 718
    Points : 1 604
    Points
    1 604
    Par défaut
    jour

    pour l'utf utilise encodeURIComponent() a la place de escape qui si je ne me trompe encode en Latin-1(ISO-8859-1)
    Plus vite encore plus vite toujours plus vite.

  5. #5
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 410
    Points : 870
    Points
    870
    Par défaut
    Merci Melka,

    effectivement encodeURIComponent permet de résoudre mon gros souci ! de plusieurs heures de recherche aboutissent enfin !


    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    icsMSG="data:text/calendar;charset=utf8," + encodeURIComponent(icsMSG);

    résolu!
    testé Ok avec Chrome,firefox, ms Edge
    Rendu utf8 Ok avec notepadd ++
    import possible ical ics vers MS courrier Calendrier
    tests faits sous Win10

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 16/01/2020, 11h32
  2. Gérer les liens absolus avec PHP
    Par moimp dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2019, 03h41
  3. Lien ASP avec javascript
    Par RATIER dans le forum ASP
    Réponses: 3
    Dernier message: 15/07/2004, 08h54
  4. [swish]Lien spécial avec flash
    Par florentcorporation dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 03/03/2004, 09h34
  5. Réponses: 14
    Dernier message: 01/09/2003, 15h54

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