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 :

[PHP-AJAX] Gestion des caractères spéciaux


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Points : 240
    Points
    240
    Par défaut [PHP-AJAX] Gestion des caractères spéciaux
    Bonjour à tous,

    N'ayant plus de cheveux à m'arracher, je viens vers vous en dernier recours.
    Voila j'ai un souci lors du passage de chaîne de caractéres spéciaux (intra-PHP) et via AJAX.

    Premier probléme :

    Lors d'un appel d'une DIV via AJAX:
    - je passe en paramétre une chaîne de caractéres avec un " ' ", la chaine se coupe au niveau du " ' "
    - Je passe en paramétre une chaîne de caractéres avec un " " ", j'obtiens une erreur => missing ) after argument list <= Normal vu que le " est un caractére délimiteur de chaîne.

    Voici l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	aja.ajoutOption(\"caraVal\",\"".htmlentities($col[$i],ENT_QUOTES)."\");  aja.ajoutOption(\"cara\",\"".mySql_field_name($resultat,$i)."\");
    Le htmlentities est le seul moyen de bien afficher mes caractéres spéciaux correctement dans ma div appele.
    J'ai essayé les utf8_decode, encode et stripslashes mais rien n'y fait.

    Deuxiéme probléme tout aussi marrant :
    Je créé une liste déroulante et je compare chaque valeur à une valeur pour savoir quelle option doit être mis à "selected" mais avec les caractéres accentués la comparaison ne fonctionne pas, et sans caractéres spéciaux, cela fonctionne.

    Mon appel à fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		$id="id".$_GET['tableVal'];
    		$formChg->affSelect("textChg",'','');
    		$formChg->affOption($id.",".$_GET['cara'],$_GET['tableVal'],stripslashes(utf8_decode($_GET['caraVal'])),'O');
    		$formChg->closeSelect();
    Ma fonction (Je ne met que affOption, les autres servant à rien
    Code : 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
    19
    20
    21
    public function affOption($type,$table,$defSelect,$idPlusNom){		
        $requete = "SELECT DISTINCT $type from $table order by $type  ";
        $resultat=connection::execute($requete);
        print("<option value=''>-------</option>");
        while($col = mySql_fetch_array($resultat)){
    	if($col[1]<>""){
                	$var=htmlentities(utf8_decode($col[1]));
    	}else{
    		$var=htmlentities(utf8_decode($col[0]));
    	}
               if($var!=""){
                  print("<option value='".$col[0]."/".$var."'");			
               }
               if($var==$defSelect){
                  print(" selected ");
               }
                print(">".$var."</option>");
        }
    mySQL_free_result($resultat);
    }
    Alors la variable $var s'affiche correctement à l'écran, lorsque je rajoute la variable $defSelect à l'affichage, celle-ci s'affiche bien aussi.
    Je ne comprends pas

    Je vous remercie par avance si vous avez des pistes pour m'aider

    P.S : Mes données sont en UTF8 en base

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Quel est l'encodage de la page html et à l'enregistrement du fichier de la page.
    Et est-ce que le serveur ne forcerait pas l'encodage en ISO ?
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  3. #3
    Membre actif Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Points : 240
    Points
    240
    Par défaut
    Bonjour,

    Dans ma page HTML, je force l'encodage en utf8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    Faut-il que je force cet encodage dans chacune de mes pages appelés dans les div, ou juste dans la page HTML les regroupant tous?

    Quand tu parle su serveur, c'est bien le serveur PHP, si oui, dans PHP.ini je laisse le fonctionnement par défaut (avec la ligne de l'encodage en commentaire => J'ai essayé de le forcer en utf8, cela n'a rien changé)

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Citation Envoyé par dragonfly Voir le message
    Bonjour,
    Dans ma page HTML, je force l'encodage en utf8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    Ok et à l'enregistrement du fichier tu utilises aussi de l'utf-8 ?
    Citation Envoyé par dragonfly Voir le message
    Faut-il que je force cet encodage dans chacune de mes pages appelés dans les div, ou juste dans la page HTML les regroupant tous?
    Euh des pages appelées dans les div ? là je vois pas trop ce que tu fais
    mais l'encodage de la page se fait une seule fois dans le head, par contre tous les fichiers doivent être enregistrés en utf-8 également.

    Citation Envoyé par dragonfly Voir le message
    Quand tu parle su serveur, c'est bien le serveur PHP, si oui, dans PHP.ini je laisse le fonctionnement par défaut (avec la ligne de l'encodage en commentaire => J'ai essayé de le forcer en utf8, cela n'a rien changé)
    Je parle du serveur web, il faut s'assurer qu'il ne force pas l'encodage en ISO, ça peut arriver sur du mutualisé, sinon pour le forcer suffit de passer par un htaccess à la racine du serveur, comme je l'explique ici en ajoutant la directive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddDefaultCharset UTF-8
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  5. #5
    Membre actif Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Points : 240
    Points
    240
    Par défaut
    Salut,

    dsl pour ma réponse tardive.

    Alors oui effectivement l'encodage se fait une fois par head (page principale)

    Concernant le serveur, je viens de créer un .htaccess (je suis actuellement en local) avec la ligne pour forcer l'encodage mais le probléme est toujours le même je ne vois aucun changement.

    Par précaution je viens de réenregistrer mes fichiers en UTF-8 mais les mêmes problémes apparaîssent toujours.

    Par avance merci
    Dragonfly

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/09/2007, 13h26
  2. [AJAX] Gestion des caractères spéciaux
    Par CrazySeb dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/05/2007, 09h43
  3. [MySQL] Gestion des caractères spéciaux dans un update
    Par olivier94 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/03/2007, 17h13
  4. Gestion des caractères spéciaux (micro)
    Par MiJack dans le forum Delphi
    Réponses: 7
    Dernier message: 19/01/2007, 22h41
  5. Gestion des caractères spéciaux
    Par claralavraie dans le forum Oracle
    Réponses: 1
    Dernier message: 22/06/2006, 14h41

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