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 :

caractères spéciaux via XAJAX et PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Par défaut caractères spéciaux via XAJAX et PHP
    Bonjour à tous,

    J'aimerais savoir comment passer des caractères spéciaux à travers un script XAJAX afin que mes textes s'affichent correctement.

    Voici les conditions d'utilisations :

    - Stockage en BDD Mysql au format UTF8_unicode_ci (les textes présents dans les champs des tables possèdent des accents, et autres caractères spéciaux)

    - Récupération en direct sur mes pages via du PHP (et uniquement du PHP), le texte s'affiche sans aucun souci avec les caractères spéciaux.
    nb : pour ce traitement, je n'utilise aucune fonction PHP particulière, juste une lecture de ma table et un affichage sans retraitement.

    - Lorsque je passe l'affichage via un script XAJAX, tous les caractères spéciaux sont remplacé par des "points d'interrogation".

    exemple :

    texte de la table : "numéro"
    affichage direct via du PHP : "numéro"
    affichage via un script XAJAX : "Num�ro"

    J'ai bien tester les addslashes mais sans succès.

    D'autres idées ?



    SOLUTION Trouvée le 20 Mars 2010 :

    voici un lien pour faire les paramètrages complets en UTF8 :
    http://electron-libre.fassnet.net/utf8.php

    Pour ma part, j'avais déjà ma BDD en UTF8, j'ai juste ajouté ceci après ma connexion base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES 'utf8'");
    et passé mon code charset en ut8 comme ci-dessous :

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

    Merci à ceux qui ont contribué et qui m'ont donné les idées pour aller plus loin.... j'ai trouvé ce tuto que je pensais util pour tous.

    Bon week-end

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Quel est l'encodage de la page php qui renvoie les données, celle interrogée par Ajax ? Est ce bien du utf-8 ?

  3. #3
    Membre éclairé Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Quel est l'encodage de la page php qui renvoie les données, celle interrogée par Ajax ? Est ce bien du utf-8 ?
    Pour tout dire, j'ai l'encodage suivant dans toutes mes pages PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv=/"Content-Type/" content=/"text/html; charset=ISO-8859-1/"/>
    Celui-ci est au format ISO-8859-1 car si j'utilise l'UTF8 dans le meta, il ne m'affiche pas correctement les caractères spéciaux.

    Par contre dans les pages ajax, je ne peux rien définir car le HEADER est déjà définit.

    C'est vrai que c'est pas très logique, je croyais que l'UTF8 permettait une plus grande amplitude pour l'utilisation de différentes langues (d'alphabet différents)

    Merci

  4. #4
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour à tous,

    Tu ne peux rien définir dans tes pages Ajax ? Tu aurais une page ajax en exemple ?

    Sinon pour l'UTF-8 pour faire simple tu as raison mais on ne mélange pas de l'UTF-8 et de l'ISO sans faire des traitements sur les chaines.

    D'ailleurs si tu as tes pages en ISO sur tout ton site et ta base de données en latin, il faut aussi que tes scripts soient écrit en ISO.

    L'UTF-8 je l'utilise toujours mais attention tous est en UTF-8 du serveur, au codage des fichiers, en passant par la meta (X)HTML.

    Donc l'UTF-8 permet la prise en charge de langue comme le Japonais, mais a conditions de tous travailler en UTF-8.

    Cordialement,

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    @Inazo +1

    Si on opte pour du UTF-8, alors il faut que tout respecte ce même encodage.
    C'est valable pour tous les encodage d'ailleurs, enfin, théoriquement.
    Si un élément ne correspond pas, faut s'attendre à avoir des problèmes.

    Si on n'a pas le choix, ça arrive, alors il faut utiliser des fonctions d'encodage/décodage, genre utf8_encode() / utf8_decode().

    Théoriquement, ça tient sur 4 points :
    1/ La création de la (ou les) page(s), des fichiers : Faut définir l'encodage UTF-8 au niveau de son éditeur.
    Vu que tu défini ta page HTML en ISO, il y a des chances que tes fichiers soient aussi en LATIN, ce qui ne serait pas correcte. Faudrait vérifier ça.

    2/ L'encodage de l'environnement Php, le définir dans le php.ini (default_charset).
    Ou alors la fonction ini_set('default_charset', 'UTf-8'), ou encore on utilise un header() pour spécifier le charset.
    Ceci va retourner dans l'entête le charset.

    3/ La Bdd (tables, champs). Il peut être nécessaire de faire un : SET NAMES utf8

    4/ Définir le charset au document HTML : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    Faudrait que tu fasse le point la dessus à mon sens.


    Dans ton cas, faut il ne faut pas perdre de vu que le principe d'Ajax c'est d'interroger un fichier distant (php, xml, etc ...) et obtenir une réponse, du contenu, et ensuite l'aficher dans la page qui l'a déclencher.
    Si le contenu obtenu en réponse a un encodage différent de la page, ça ne va pas l'faire.

  6. #6
    Membre éclairé Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Par défaut
    Bonjour à vous deux,

    je comprends mieux d'après ce que vous m'avez dis, je vérifie si tout mon environnement est bien en UTF8 comme ma BDD puis je reviens vers vous.

  7. #7
    Membre éclairé Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    @Inazo +1

    Théoriquement, ça tient sur 4 points :
    1/ La création de la (ou les) page(s), des fichiers : Faut définir l'encodage UTF-8 au niveau de son éditeur.
    Vu que tu défini ta page HTML en ISO, il y a des chances que tes fichiers soient aussi en LATIN, ce qui ne serait pas correcte. Faudrait vérifier ça.
    Pour ca c'est bon mon éditeur est paramètré pour tout sauvegarder en UTF8

    Citation Envoyé par RunCodePhp Voir le message
    @Inazo +1
    2/ L'encodage de l'environnement Php, le définir dans le php.ini (default_charset).
    Ou alors la fonction ini_set('default_charset', 'UTf-8'), ou encore on utilise un header() pour spécifier le charset.
    Ceci va retourner dans l'entête le charset.
    Je viens de regarder mon php.ini et mon default_charset est en "NO VALUE" (que dois je faire ? mettre UTF8 en défaut ? si oui comment dois je faire car je ne suis pas un champion pour paramètrer mon php.ini)

    Citation Envoyé par RunCodePhp Voir le message
    @Inazo +1
    3/ La Bdd (tables, champs). Il peut être nécessaire de faire un : SET NAMES utf8
    Si je me souviens bien, c'est lors des inserts et update que l'on doit faire cette ajout ? un exemple pour m'aider ? le SET NAMES utf8 je dois le placer ou dans la requête ?


    Citation Envoyé par RunCodePhp Voir le message
    @Inazo +1
    4/ Définir le charset au document HTML : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    Une fois les autres points définit, je pourrais mettre l'UTF dans le META



    Citation Envoyé par RunCodePhp Voir le message
    @Inazo +1
    Dans ton cas, faut il ne faut pas perdre de vu que le principe d'Ajax c'est d'interroger un fichier distant (php, xml, etc ...) et obtenir une réponse, du contenu, et ensuite l'aficher dans la page qui l'a déclencher.
    Si le contenu obtenu en réponse a un encodage différent de la page, ça ne va pas l'faire.
    Je suis persuadé que je vais apprendre beaucoup de cette analyse coté UTF8, c'est un peu plus compliqué que je pensais, mais je suis certain que la solution va être possible.

    Par ailleurs, j'écris aussi des informations dans des fichiers textes afin de gagner du temps, mais dès lors que j'ai des caractères spéciaux, ils sont transformé également en code bizarre.

    exemple : "stéphanie" vas être écrit en "st√©phanie"

    et du coup lorsque je lis mon fichier, l'affichage n'est pas au bon format.

    Merci encore

    SOLUTION TROUVÉE VOIR LE PREMIER MESSAGE POUR LA SOLUTION
    MERCI à Runcodephp et Inazo

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

Discussions similaires

  1. Caractère spéciaux via formulaire mail
    Par Mangaku dans le forum Langage
    Réponses: 9
    Dernier message: 04/12/2014, 15h43
  2. Réponses: 0
    Dernier message: 27/12/2008, 15h44
  3. [PHP-JS] caractère spéciaux Ajax
    Par romano2003 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 18h25
  4. Insert d'un champ caractères spéciaux avec firebird et php
    Par PHILOSOPHE dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 14/05/2005, 11h18
  5. [FLASH MX2004] Caractères spéciaux et PHP
    Par Sun3clipse dans le forum Flash
    Réponses: 3
    Dernier message: 24/11/2004, 10h33

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