Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2007, 11h29   #1
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
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
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 11h43   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
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.
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h04   #3
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
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?
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h43   #4
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Si tu créé des fichiers xml pour le transfert vers le client, n'oublie pas d'ajouter <?xml version="1" charset="utf8"?>
__________________
HADOPI : black-out du net!
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h46   #5
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
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...
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h54   #6
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
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
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h56   #7
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Ouep j'avais déjà regardé et repéré ceci:

Code :
1
2
 
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Cela dit, je doute...

Je vais tester ça plus tard, rajouter un charset...
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 09h30   #8
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
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!
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h25.


 
 
 
 
Partenaires

Hébergement Web