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 :

Encodage unicode


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut Encodage unicode
    Bonjour,
    Je suis en train de passer mon site sur UTF8

    Jusqu'a aujourd'hui j'utilisais addslashes et stripslashes sur les chaines que j'inserais dans ma base.

    Depuis que je suis passé en UTF8, tout fonctionne bien sauf que je viens de remarquer que stripslahes($maChaine) me renvoi des codes UTF8.

    Par exemple J'étais à la mer me donne J'u00e9tais u00e0 la mer

    Bref je suis un peu bloqué je ne peux plus enlever les slashes.
    D'ailleurs, addslashes est-il toujours utile en UTF8?
    Dois-je changer ma façon de gérer les inserts avec UTF8?

    Merci pour vos réponses

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne pense pas que cela vienne de stripslashes(), as-tu vérifié sans cette fonction ce que tu obtenais ?

  3. #3
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    - Dans ma base (depuis phpmyadmin)
    Valeur de mon champ : J\'étais à la mer

    - Depuis mon debuggeur PHP, sans stripslashes
    Valeur de ma chaine de caractères -> J\\'\u00e9tais \u00e0 la mer
    Affichage à l'écran -> J\'étais à la mer

    - Depuis mon debuggeur PHP, avec stripslashes
    Valeur de ma chaine de caractères -> J\'u00e9tais u00e0 la mer
    Affichage à l'écran -> J'u00e9tais u00e0 la mer

    ->J'utilise du code JSON et ajax pour transmettre ma chaine à javascript

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Tu as essayé d'utiliser utf8_encode() / utf8_decode()?

  5. #5
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Dans ton httpd.conf tu as AddCharsetDefault UTF-8 ?

  6. #6
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Tout d'abord merci pour vos réponses

    J'ai trouvé une piste.

    Mon UTF8 se fait malmener par json_encode()
    C'est lui qui transforme mon é en u00e9.

    Je vais voir si il y a un moyen d'éviter cela.

  7. #7
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par guigo Voir le message
    Dans ton httpd.conf tu as AddCharsetDefault UTF-8 ?
    Je n'ai pas cette ligne sur mon serveur Apache.

    Pourtant mon UTF8 s'affiche très bien lorsque je ne fais pas d'Ajax.
    Par exemple j'insère et j'affiche parfaitement du Cyrillique

    Par contre dès que je recupère une donnée et que je le converti en JSON avec json_encode(), ca me donne ces caractères bizarres.

    Dans la documentation il est dit "Cette fonction ne fonctionne qu'avec des données encodées UTF-8."

    J'ai essayé json_encode(utf8_encode($maValeur)) mais ca ne donne rien de bon.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Elle est en quel encodage ta base?

  9. #9
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par scalp58 Voir le message
    Elle est en quel encodage ta base?
    Dans phpmyadmin j'ai

    Sur la base, sur la table et sur les champs concernés j'ai : utf8_unicode_ci

    Un détail peut-etre important : cette base est une migration de latin1_swedish_ci vers utf8_unicode_ci

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    Heu... je sais pas si ca a une importance la migration :s

    Mais est ce que ton editeur de texte est e utf8 lui aussi?

  11. #11
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    J'ai testé avec une variable en Cyrillique récuperée grace à une requete SQL

    Valeur dans le debugger : апр апр
    Valeur à l'écran : апр апр


    après un json_encode():

    Valeur dans le debugger : \u0430\u043f\u0440 \u0430\u043f\u0440
    Valeur à l'écran : "\u0430\u043f\u0440 \u0430\u043f\u0440"


    PS : Je suis sous Eclipse et il affiche bien les accents et le cyrilique

  12. #12
    Membre du Club Avatar de Mecano14
    Inscrit en
    Juin 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2004
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    EN fait il faudrait peut-etre simplement que je fasse mon stripslashes avant mon json_encode() .
    Je teste ça



    Edit : bon vraiment désolé c'était ça mon problème.....rien à voir avec UTF8 en fait
    Merci pour votre aide

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

Discussions similaires

  1. Encodage unicode UTF8
    Par yaya0057 dans le forum Jasper
    Réponses: 1
    Dernier message: 23/02/2010, 00h21
  2. encode() et caractères grecs : encodage unicode ?
    Par drouhne dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/10/2008, 16h32
  3. [encodage] Unicode ne sait pas lire unicode...
    Par Mr Hyde dans le forum Bibliothèques tierces
    Réponses: 10
    Dernier message: 01/12/2005, 15h32
  4. [unicode/ascii] Comment changer l'encodage par défaut????
    Par Mr Hyde dans le forum Général Python
    Réponses: 2
    Dernier message: 07/10/2005, 09h24
  5. [Encodage] Unicode dans un mail envoyé par servlet
    Par beber69 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 16/09/2005, 17h21

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