MySQL et character set ?
Le
Une Bévue

je tourne en rond à propos du character set de Mysql.
avec :
$mysqli = new mysqli("127.0.0.1", $user, $password, $database, $port);
echo "character_set = " . mysqli_character_set_name($mysqli) . "<br />";
me retourne :
"character_set = latin1"
alors que j'ai changé les différents character set en 'utf8' et les
différentes collation en 'utf8_general_ci'.
j'ai même réécrit ma base de test pour m'assurer de l'encodage.
ce problème persiste aussi bien sur Xubuntu 12.10 que Mac OS X Mountain
Lion.
Bien sûr, si je poste c'est que l'encodage correspond à latin1 et pas à
utf8.
le script de création de la table :
CREATE TABLE `categories` (
`rowid` int(11) NOT NULL,
`idx` int(11) NOT NULL,
`name` varchar(80) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
L'homme est imparfait, mais ce n'est pas étonnant
quand on pense à l'époque où il a été créé.
— Alphonse Allais
avec :
$mysqli = new mysqli("127.0.0.1", $user, $password, $database, $port);
echo "character_set = " . mysqli_character_set_name($mysqli) . "<br />";
me retourne :
"character_set = latin1"
alors que j'ai changé les différents character set en 'utf8' et les
différentes collation en 'utf8_general_ci'.
j'ai même réécrit ma base de test pour m'assurer de l'encodage.
ce problème persiste aussi bien sur Xubuntu 12.10 que Mac OS X Mountain
Lion.
Bien sûr, si je poste c'est que l'encodage correspond à latin1 et pas à
utf8.
le script de création de la table :
CREATE TABLE `categories` (
`rowid` int(11) NOT NULL,
`idx` int(11) NOT NULL,
`name` varchar(80) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
L'homme est imparfait, mais ce n'est pas étonnant
quand on pense à l'époque où il a été créé.
— Alphonse Allais
où j'utilise de ces 2 côtés "mysqli".
Bon j'ai trouvé "un peu par hasard"...
Le problème proviendrait, d'après ce que j'ai compris, de l'interface
entre MySQL et PHP5 "mysqli", il faut spécifier le charset voulu :
Avec :
$mysqli = new mysqli("127.0.0.1", $user, $password, $database, $port);
utiliser :
$mysqli->set_charset("utf8")
c'est curieux que cette interface transcode en latin1...
--
L'homme est imparfait, mais ce n'est pas étonnant
quand on pense à l'époque où il a été créé.
— Alphonse Allais