Le stockage et l'affichage de chaîne unicode (हिन्दी) à l'aide de PHP et MySQL

J'ai pour stocker hindi texte dans une base de données MySQL, le récupérer à l'aide d'un script PHP et de l'afficher sur une page web. J'ai fait la suivante:

J'ai créé une base de données et l'ensemble de son encodage UTF-8 et aussi le classement utf8_bin.
J'ai ajouté un champ de type varchar dans le tableau et le configurer pour accepter texte UTF-8 dans le jeu de caractères de la propriété.

Puis j'ai mis sur l'ajout de données. Ici, j'ai dû copier les données d'un site existant.
En hindi, le texte ressemble à ceci: सूर्योदय:05:30

J'ai directement copié ce texte dans ma base de données et utilisé le code PHP echo(utf8_encode($string)) pour afficher les données. En faisant ainsi, le navigateur m'a montré "??????".

Quand j'ai inséré le UTF équivalent du texte en cliquant sur "afficher la source" dans le navigateur, cependant, सूर्योदय se traduit par सूर्योदय.

Si je entrer et stocker सूर्योदय dans la base de données, il convertit parfaitement.

Donc ce que je veux savoir, c'est comment je peux stocker directement सूर्योदय dans ma base de données et de les récupérer et de les afficher dans ma page web à l'aide de PHP.

Aussi, quelqu'un peut-il m'aider à comprendre s'il y a un script qui lorsque je tape dans सूर्योदय, me donne सूर्योदय?

Solution Trouvée

J'ai écrit l'exemple de script suivant qui a travaillé pour moi. Espérons que cela aide quelqu'un d'autre trop

<html>
  <head>
    <title>Hindi</title></head>
  <body>
    <?php
      include("connection.php"); //simple connection setting
      $result = mysql_query("SET NAMES utf8"); //the main trick
      $cmd = "select * from hindi";
      $result = mysql_query($cmd);
      while ($myrow = mysql_fetch_row($result))
      {
          echo ($myrow[0]);
      }
    ?>
  </body>
</html>

Le dump de ma base de données stockant hindi utf chaînes est

CREATE TABLE `hindi` (
  `data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `hindi` VALUES ('सूर्योदय');

Maintenant, ma question est, comment ça fonctionne, sans spécifier "MÉTA" ou l'en-tête info?

Merci!

InformationsquelleAutor Anirudh Goel | 2009-07-29