Aller au contenu

Problème d'encodage lors insertion base de données


Sujets conseillés

Posté (modifié)

Bonjour,

J'ai pour la première fois un problème d'encodage.

Je suis en train de développer un site qui sera hébergé chez infomaniak sur une base mysql.

Page incriminée : http://www.voilou.fr/annonceurs/ouverture-compte-annonceur.php

Comme vous verrez j'ai :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Dans mysql j'ai choisin latin_general_ci en interclassement.

mysql.png

Mon code php (en partie):

On suppose que je sélectionne "Bosnie Herzégovine" dans la liste de pays.

<?php
$pays = ucfirst(strtolower(trim(mysql_real_escape_string($_POST['pays']))));

//Puis je fais une insertion normale dans la base...
?>

Le problème est que dans la base de donnée cela donne : Bosnie herzégovine

Je comprend pas le problème... j'ai testé le script sur un autre serveur et il n'y a pas ce problème d'encodage :(

Pourquoi et comment y remédier?

Merci

Modifié par joboy84
Posté

Salut,

juste comme ça, pourquoi c'est marqué "Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)" dans ton screen, vers le bas?

Posté (modifié)

En fait oui... Mais bon je viens de tout modifier en UTF8:

Lorsque je soumet mon formulaire, les données entrées dans la table avec accent, comme le "é", devient par ex é. Je ne comprends pas...

Si je fais

SELECT CHARSET(pays), COLLATION(pays),
CHARSET('Corée du sud'), COLLATION('Corée du sud')
FROM Annonceurs LIMIT 1 ;

Cela renvoie:

CHARSET(pays) => utf8

COLLATION(pays) => utf8_general_ci

CHARSET('Corée du sud') => utf8

COLLATION('Corée du sud') => utf8_general_ci

La balise méta est:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Voici la structure des bases :

mysqlutf8.png

phpinfo() : http://voilou.fr/test.php

Dans le .htaccess j'ai ajouté : AddDefaultCharset UTF-8

Svp aidez moi je désespère..

Merci

Modifié par joboy84
Posté

Salut

Concernant le fichier prorprement dit, la balise <meta> ne sert quasiment à rien. Ce qui est important c'est que le fichier soit lui-même au format UTF-8.

Ouvre-le dans un éditeur de texte pour vérifier ça.

À savoir: si un fichier est écrit dans un encodage avec une balise meta qui parle d'un autre encodage, la priorité va au format du fichier.

Posté

Hello.

Comme Dudu l'a dit, c'est l'encodage des caractères au sein même de ton fichier qui compte. Donc, par exemple, dans Notepad++, il faut cliquer sur Format -> Convertir en UTF-8 (sans bom).

Pour ce qui est de MySQL, j'admets que je ne connais pas de solution propre (d'ailleurs, si quelqu'un a, je suis preneur) mais, dans mes scripts, j'exécute avant ma première requête SQL ce bout de code: (qui dit à PHP de travailler en UTF8 avec MySQL en gros)

mysql_query('SET NAMES \'utf8\'');

Voilà!

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...