SET NAMES 'utf8'juste après la connexion à MySQL dans les scripts PHP.
function __construct($db_host, $db_username, $db_password, $db_name, $db_prefix = "" ) { $this->prefix = $db_prefix; $this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name); if (!$this->link_id) error('Impossible de se connecter à MySQL et à la base de données. MySQL dit : '.mysqli_connect_error(), __FILE__, __LINE__); // Setup the client-server character set $this->set_names('utf8'); return $this->link_id; }
Citation
vampdeservice
Ayant beaucoup de soucis avec les accents français, tout s'améliore si je passe en base UTF8 (mis au niveau de my.ini)
Add DefaultCharset Offpour le site en question. Autrement dit, ce n'est pas au serveur apache de gérer le jeu de caractères.
default_charset = "ISO-8859-1"Même remarque.
<meta charset="UTF-8">et d'autre part, surtout ne pas oublier de sauvegarder votre fichier en utilisant le jeu de caractères : "encoder en utf-8 (sans BOM)".
<?php header('Content-Type: charset=utf-8'); ?>et sauvefarder votre fichier php en utilisant le jeu de caractères : "encoder en utf-8 (sans BOM)".
Create Database nom de la base Default Character set UTF8 collate UTF8_GENERAL_CI;Il faut préciser le jeu de caractères utilisé dans la base de données.
Create Table nom de la table (liste des colonnes) Default CharSet=UTF8 collate=UTF8_GENERAL_CI;Il faut préciser aussi le jeu de caractères utilisé dans la table.
[client] default-character-set = utf8 [wampmysqld] character-set-server = utf8 collation-server = utf8_general_ci
<?php
/*-----------------------------------------------------*/
/* Informations pour la connexion à la base de données */
/*-----------------------------------------------------*/
$nom_du_serveur = "mysql:host=localhost;dbname=test";
$nom_utilisateur = "test";
$mot_de_passe = "test";
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
/*----------------------*/
/* Connexion au Serveur */
/*----------------------*/
try {
$link = new PDO($nom_du_serveur,$nom_utilisateur,$mot_de_passe, $options);
}
catch (Exception $e)
{
echo "Connection à MySql impossible : ", $e->getMessage();
die();
}
?>
Citation
VanDeService
tout en étant déclaré latin1 est en fait cp850
SELECT _latin1'été', _utf8'été', _cp850'été';et regarder quelle colonne donne une réponse correcte ; si c'est la première, la console est vraiment en latin1, mais si c'est la troisième, c'est du CP850.
mysql> SELECT _latin1'été', _utf8'été', _cp850'été'; +-----+-----+-----+ | ?t? | ?t? | été | +-----+-----+-----+ | ?t? | ?t? | été | +-----+-----+-----+ 1 row in set (0.00 sec) mysql>
mysql> SELECT _latin1'été', _utf8'été', _cp850'été'; +-----+----+-----+ | été | ?t | ÚtÚ | +-----+----+-----+ | été | ?t | ÚtÚ | +-----+----+-----+ 1 row in set (0.00 sec) mysql>Je pense que cela provient de mon paramétrage dans my.ini. Voici ce que j'ai chez moi :
[client] default-character-set = latin1 [wampmysqld] character-set-server = latin1 collation-server = latin1_general_ciDonc oui, c'est une bonne piste pour corriger le problème de vampdeservice .
Citation
VampDeService
Je vais pouvoir demander le paramétrage de manière plus sereine le véhicule neuf que je vais recevoir (avec un cendrier vide).
Citation
VampDeService
Si je résume, il vaut mieux gérer dans les applicatifs les jeux de caractères.