J'essaie de sauvegarder les accents français dans ma base de données, mais ils ne sont pas enregistrés comme ils le devraient dans la base de données.
Par exemple, un "é" est enregistré en tant que "Ã ©".
J'ai essayé de définir mes fichiers sur "Unicode (utf-8)", les champs de la base de données sont "utf8_general_ci" ainsi que sur la base de données elle-même.
Lorsque je regarde mes données postées via AJAX avec Firebug, je vois que l'accent est transmis sous la forme "é", il est donc correct.
Merci et laissez-moi savoir que vous avez besoin de plus d'informations!
Personnellement, j'ai résolu le même problème en ajoutant après le code de connexion MySQL:
mysql_set_charset("utf8");
ou pour mysqli:
mysqli_set_charset($conn, "utf8");
ou l'équivalent mysqli OOP:
$conn->set_charset("utf8");
Et parfois, vous devrez définir le charset main php en ajoutant ce code:
mb_internal_encoding('UTF-8');
Du côté HTML du client, vous devez ajouter les données d'en-tête suivantes:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Pour utiliser les résultats JSON AJAX (par exemple, à l'aide de jQuery), vous devez définir l'en-tête en ajoutant:
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
Cela devrait faire l'affaire
Le meilleur choix est que votre connexion à la base de données ne soit pas codée UTF-8 - il s'agit généralement de la norme ISO-8859-1 par défaut.
Essayez d'envoyer une requête
SET NAMES utf8;
après avoir établi la connexion.
mysqli_set_charset ($ conn, "utf8");
si vous utilisez PDO, vous devez instancier comme ça:
new \PDO("mysql:Host=$Host;dbname=$schema", $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
Utilisez UTF8:
Définir une méta dans votre
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Lorsque vous vous connectez à votre base de données mySQL, forcez l’encodage pour NE PAS jouer avec vos paramètres mysql.
$conn = mysql_connect('server', 'user', 'password') or die('Could not connect to mysql server.');
mysql_select_db('mydb') or die('Could not select database.');
mysql_set_charset('utf8',$conn); //THIS IS THE IMPORTANT PART
Si vous utilisez AJAX, définissez votre codage comme suit:
header('Content-type: text/html; charset=utf-8');
Avez-vous examiné http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html :
Applications client qui doivent communiquer avec le serveur à l'aide de Unicode devrait définir le client jeu de caractères en conséquence; pour Par exemple, en émettant un SET NAMES 'utf8' déclaration. ucs2 ne peut pas être utilisé en tant que jeu de caractères client, ce qui signifie que cela ne fonctionne pas pour SET NAMES ou SET JEU DE CARACTÈRES. (Voir Section 9.1.4, “Jeux de caractères de connexion et Classements”.)
En plus de cela:
si vous obtenez des données via php de votre mysql-db (tout en utf-8) mais quand même obtenir '?' pour certains caractères spéciaux dans votre navigateur (), essayez ceci:
après mysql_connect (), et mysql_select_db () ajoute ces lignes: mysql_query ("SET NAMES utf8");
a travaillé pour moi. J'ai d'abord essayé avec le utf8_encode, mais cela n'a fonctionné que pour äüöéè ... et ainsi de suite, mais pas pour kyrillique et autres caractères.
PHP (.net) déconseille de définir des jeux de caractères après la connexion à l'aide d'une requête telle que SET NAMES utf8, car votre fonctionnalité permettant d'échapper des données dans les instructions MySQL pourrait ne pas fonctionner comme prévu.
N'utilisez pas SET NAMES utf8, mais utilisez plutôt la fonction (ou la méthode) ..._ set_charset () appropriée, au cas où vous utiliseriez PHP.
Vous devez a) vous assurer que vos tables utilisent un codage de caractères capable de coder de tels caractères (UTF-8 est plutôt l'encodage par excellence) et b) de vous assurer que vos soumissions de formulaire sont envoyées à la base de données en le même encodage de caractères. Pour ce faire, en enregistrant vos fichiers HTML/PHP/tous types au format UTF-8, et en incluant une balise méta dans l’en-tête qui indique au navigateur d’utiliser le codage UTF-8.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Oh, et n'oubliez pas C, lors de la connexion à la base de données, assurez-vous d'utiliser le bon jeu de caractères en exécutant un jeu de caractères SET NAMES = utf8 (la syntaxe n'est peut-être pas la bonne, il faudra que je recherche il devrait être, mais ce sera dans ces lignes)