Je dois stocker du texte hindi dans une base de données MySQL, le récupérer à l'aide d'un script PHP et l'afficher sur une page web. J'ai fait ce qui suit :
J'ai créé une base de données et j'ai défini son encodage à UTF-8 et aussi la collation à utf8_bin
. J'ai ajouté un champ varchar dans la table et je l'ai configuré pour accepter le texte UTF-8 dans la propriété charset.
Puis j'ai commencé à y ajouter des données. Ici, j'ai dû copier les données d'un site existant . Le texte en hindi 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 cela, le navigateur m'a montré " ??????".
Lorsque j'ai inséré l'équivalent UTF du texte en allant à "view source" dans le navigateur, cependant, se traduit par सूर्योदय
.
Si je saisis et stocke सूर्योदय
dans la base de données, il se convertit parfaitement.
Ce que je veux savoir, c'est comment je peux stocker directement dans ma base de données et le récupérer pour l'afficher dans ma page Web en utilisant PHP.
Aussi, quelqu'un peut-il m'aider à comprendre s'il y a un script qui, lorsque je le tape, me donne सूर्योदय
?
Solution trouvée
J'ai écrit l'exemple suivant script qui a fonctionné pour moi. J'espère que cela aidera quelqu'un d'autre
<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 les chaînes de caractères hindi utf est le suivant
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 la suivante : comment cela a-t-il fonctionné sans spécifier "META" ou des informations d'en-tête ?
Merci !