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

Langage PHP Discussion :

Tout UTF8 sauf JS


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut Tout UTF8 sauf JS
    Bonjour,

    Je suis en train de bosser l'encodage d'une application web.
    - Toutes mes pages sont encodées en UTF8 par mon éditeur.
    - La base a le charset utf8-unicode
    - le jeu de caractère des pages HTML est en utf-8 (meta)
    - Dans mon Design pattern exécutant les requêtes, je fais un :
    mysql_query("SET NAMES 'utf8'");
    afin que php ne gère plus nativement l'iso. Ca fonctionne très bien.

    Tous les caractères s'affichent correctement de la base vers php et de php vers la base. Tous sauf ceux qui passent par JS (ajax).

    Sur un formulaire, je saisi des caractères accentués, les textes sont mis en variables par ajax et passés vers une page php.
    A la réception des variables, un echo rend compte que ces caractères deviennent des "?" donc que ces variables ont été encodées en ISO.
    A moins de faire un utf8_encode() à leur réception, existe-t'il un moyen plus léger qu'on applique qu'une seule fois au niveau du code?

    merci

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonjour,

    Suivant la librairie JS que tu utilises, tu dois pouvoir paramétrer l'encodage des variables. Il me semble qu'avec prototype c'est possible.

  3. #3
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Une librairies JS?
    Comment ça? Le seul script externe que je n'ai pas développé est ajax.js.
    Il y aurait une méthode pour convertir les variables en UTF8 depuis ce script?

  4. #4
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Si tu créé des fichiers xml pour le transfert vers le client, n'oublie pas d'ajouter <?xml version="1" charset="utf8"?>

  5. #5
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Non non en fait la simple réception des variables n'interprète pas le jeu de caractère. Ma page est encodée en UTF8 et les accents sont correctement retournés par le xml (cf utf8_encode()) mais l'affichage de ces variables sans passer par utf8 ne fonctionne pas (=> é devient ?).

    Mais je pense qu'il doit bien y avoir une solution afin que mes script JS soient ou bien encodés tous en UTF8 ou bien qu'une fonction dans AJAX permette l'envoi de ces variables encodées en UTF8.

    Je ne trouve rien à faire à part un utf8_encode mais faire cela dans toutes mes pages php/xml pour chaque variable n'est pas tip top.

    Merci, à votre écoute...

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    De toute façon comme il s'agit d'une saisie faite par le client, tu te dois d'effectuer quelques vérifications. Au moment de ces vérifications, il faudrait appliquer l'utf8

  7. #7
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Ouep j'avais déjà regardé et repéré ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    Cela dit, je doute...

    Je vais tester ça plus tard, rajouter un charset...

  8. #8
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    yeah j'ai trouvé la soluce sur un forum!
    Purée j'aurai pu chercher des heures sans ça!
    Le problème se trouve au niveau de la fonction escape() située dans le fichier ajax.js. Cette fonction appelée au niveau du appendData effectue une convertion en ISO dans le sens où elle convertie les caractères en ASCII hexa.
    Il suffit de supprimer son appel.

    Dorénavant je n'ai plus à me soucier d'aucune conversion. J'écris mes accents où je veux sans utf8_encode() sans header("Content-type:...;Charset:...;") sans fonction supplémentaire.

    Ouf!

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

Discussions similaires

  1. Tout masquer sauf un id
    Par Bobybx dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 01/03/2007, 15h33
  2. [RegEx] Tout récupérer sauf les attributs alt= et title=
    Par juJuv51 dans le forum Langage
    Réponses: 16
    Dernier message: 28/02/2007, 23h07
  3. [VBA-W]Trouver TOUTES couleur sauf le noir ?
    Par kitcreanet dans le forum VBA Word
    Réponses: 7
    Dernier message: 28/08/2006, 14h10
  4. Réponses: 4
    Dernier message: 08/08/2006, 12h47
  5. [RegEx] tout remplacer sauf ...
    Par prgasp77 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 14h26

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