5 votes

Umlauts allemands dans MYSQL INSERT

J'ai un problème avec mon instruction d'insertion mysql. J'ai un formulaire qui soumet correctement les caractères utf-8 au fichier d'insertion (j'ai vérifié les paramètres POST).

Maintenant, lorsque je regarde l'INSERT dans ma BD, il n'y a pas de trémas, mais des points d'interrogation.

L'erreur doit se situer juste avant l'instruction d'insertion.

Si j'édite le contenu (saisi manuellement) de ma BD, les trémas s'affichent correctement.

// echo $_POST["title"];
// outputs correctly with special chars: "Some german title with umlaute ä ö ü"

mysql_query("INSERT INTO videos (youtube_hash, title, description, category, created) VALUES ('".mysql_real_escape_string($_POST["hash"])."', '".mysql_real_escape_string($_POST["title"])."', '".mysql_real_escape_string($_POST["desc"])."', '".mysql_real_escape_string($_POST["cat"])."', '".time()."')") or die(mysql_error());

// database entry looks like this: "Some german title with umlaute ? ? ?"

J'espère que quelqu'un pourra m'aider dans ce domaine :)

EDITAR:

htmlentities() a fait le travail !

4voto

Nischal Bachu Points 127

Lorsque vous insérez vos données de php dans votre base de données mysql, essayez d'envelopper vos données de type chaîne en utilisant utf8_decode() ;

utf8_decode(string)

Comme le dit le manuel php, cela convertit utf8 en ISO-8859-1 (latin1) ;

Vous pouvez également expérimenter avec le iconv() fonction. Cela vous donne plus de choix quant à l'encodage d'entrée et l'encodage de sortie souhaité.

string iconv ( string $in_charset , string $out_charset , string $str )

Si cela ne vous aide toujours pas, essayez de modifier la collation de la colonne de la table Mysql dans laquelle vous insérez les données, en latin1_swedish_ci.

1voto

James C Points 9120

L'utilisation des entités HTML n'est pas la meilleure solution à votre problème. Idéalement, vous devriez stocker les données dans la base de données et n'utiliser que des entités HTML. htmlentities() à des fins d'affichage. Et si vous vouliez un jour afficher/exporter ces données d'une autre manière qu'en HTML.

Je vous recommande de vous documenter sur la gestion des jeux de caractères en PHP/MySQL. Voici un article que j'ai écrit récemment : Comment éviter les problèmes d'encodage de caractères en PHP

Postez à nouveau si vous avez toujours des problèmes.

0voto

Overflowh Points 1052

Essayez de changer le jeu de caractères de MySQL DB de Latin1 à UNICODE.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X