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

PHP & Base de données Discussion :

Affichage de données (japonais - utf8)


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Webmaster / Agent de voyage
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webmaster / Agent de voyage

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Affichage de données (japonais - utf8)
    Bonjour à tous,

    J'ai une base de données avec des entrées en français et en japonais. Sur ma base MySQL j'ai défini tous les champs en utf8 :

    Nom : sql_utf8.JPG
Affichages : 166
Taille : 17,3 Ko

    Sur ma page PHP qui me permet d'afficher les données de la base j'ai indiqué <meta charset="utf-8"/> et sur les champs en japonais j'ai mis <span lang="ja-jp">.
    Toutefois, les données en japonais sont affichées en série de points d'interrogation. Toutes les solutions que je trouve parlent d'utf8, je ne comprends pas ce qui bloque l'affichage.
    Si vous avez une idée, ça m'aiderai beaucoup.

    Merci.

    Kelly

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    tu dois ré-encoder tes données MySQL en utf8mb4_unicode_ci et n'utiliser plus que ce charset et collation partout dans ta base de données

    Ensuite dans ton PHP, pour ce qui est des manipulations de chaînes de caractères tu ne dois plus qu'utiliser les fonction mb_xxx()

  3. #3
    Membre à l'essai
    Femme Profil pro
    Webmaster / Agent de voyage
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webmaster / Agent de voyage

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Salut,

    Merci de ton aide. J'ai bien converti toutes les entrées de la base en utf8mb4_unicode_ci.
    Dans mon PHP j'utilise des fonctions basiques pour afficher le résultat. Ici l'entrée nom_jp doit s'afficher en caractères japonais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      $query  = $mysqli->query("SELECT id, nom_fr, nom_jp, ville, adr_fr FROM Hotels
    	   WHERE id='$id'");
     
    	   while( $resultat = mysqli_fetch_array($query)){
           echo
    	 "<br/><br/><div class='result'><span style='font-weight:bold; text-transform: uppercase;'>".$resultat['ville']." </span><br/> <br/> 
    	 <span style='font-weight:bold;'>Nom h&ocirc;tel : </span>".$resultat['nom_fr']." <br/>  
    	 <span style='font-weight:bold;'>Nom h&ocirc;tel (japonais) : </span>".$resultat['nom_jp']." <br/> <br/>
    	 <span style='font-weight:bold;'>Adresse : </span>".$resultat['adr_fr']."  <br/> ;}
    Tu veux dire que je dois convertir les chaînes de caractères venant des colonnes en japonais à l'aide d'une fonction supplémentaire ? Comme mb_convert_encoding, par exemple ? Je ne suis pas sûre de comprendre.
    Merci de ton aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Perso, mes colonnes SQL en utf8_general_ci, et tout fonctionne correctement (exemple 1 / exemple 2)

    2- Par contre :

    Bref : il faut que TOUT soit en UFT-8.

    N.B. Je te conseille VIVEMENT d'utiliser PDO plutôt que mysqli_...


  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    assure toi aussi que tes scripts php soient encodés en utf-8 sans BOM.
    Comme ça t'es homogène sur toute la ligne :
    - base de données
    - scripts php
    - rendu navigateur

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    1- Perso, mes colonnes SQL en utf8_general_ci, et tout fonctionne correctement
    Oui ça stocke les données correctement mais dès que tu fais des manips du genre tris et comparaisons, là ça ne fonctionnera plus comme attendu.

    L'organisme qui gère l'Unicode fournit absolument toutes les règles linguistiques et orthographiques pour chaque langage pris en charge (tris, comparaisons, majuscules, minuscules, etc...) C'est très complexe dès que vous vous y plongez, j'y ai goûté et ben croyez-moi c'est une vraie soupe de fèves.

    Les moteurs de bases de données ont fait comme ils ont pu avec tout ça et pour arriver à fournir une prise en charge de toutes les langues possibles sans trop dégrader leur performances. Les encodages particuliers chez MySQL comme utf8_general_ci ou utf8_unicode_ci correspondent à une implémentation "maison" partielle de la norme Unicode. Compte tenu de l'évolution croissante des possibilités informatiques, il a été proposé par MySQL l'encodage utf8mb4_unicode_ci qui lui met tout le monde d'accord car c'est l'implémentation complète et officielle de la norme Unicode.


    Quelques conseils :

    Quand vous démarrez une nouvelle base de données MySQL, je vous invite à n'utiliser plus que utf8mb4_unicode_ci pour tout. Comme ça, il n'y aura plus aucune surprise.

    Pour les scripts PHP, encodez les en utf-8 sans BOM et n'utilisez que les fonctions commençant par mb_xxx pour les manipulations sur les chaînes de caractères ⇒ mb_ pour MultiByte string

    Pour les regex pensez à rajouter le drapeau /u dans les paramètres : /u comme Unicode.

    Et pour le rendu navigateur : toujours <meta charset="utf-8">, les navigateurs ont généralement une excellente implémentation de l'Unicode

  7. #7
    Membre à l'essai
    Femme Profil pro
    Webmaster / Agent de voyage
    Inscrit en
    Décembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webmaster / Agent de voyage

    Informations forums :
    Inscription : Décembre 2019
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour votre aide !
    Ta solution a parfaitement fonctionné jreaux62, ça m'a bien aidé, j'étais bloquée pendant un bon moment là-dessus.
    En tout cas j'ai tout en utf8mb4_unicode_ci à partir de maintenant et les fichiers en UTF-8 sans BOM. Merci pour ces conseils.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    ...il a été proposé par MySQL l'encodage utf8mb4_unicode_ci qui lui met tout le monde d'accord car c'est l'implémentation complète et officielle de la norme Unicode...
    Voilà enfin une explication claire !
    c'est noté !

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

Discussions similaires

  1. Affichage de données en OpenGL
    Par bennnun dans le forum OpenGL
    Réponses: 6
    Dernier message: 10/05/2005, 02h34
  2. TDBCtrlGrid - Affichage des données
    Par audreyb dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2004, 13h10
  3. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07
  4. Affichage de données (histograme, graphe etc.)
    Par sunshine33 dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 13/01/2004, 14h16
  5. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19

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