Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment stocker des accents sur des caractères dans ma base de données

UTF-8 est (généralement) un encodage "sûr" pour n'importe quel jeu de caractères dans le monde. (Pas toujours le plus efficace, et il y a des arguments à faire valoir qu'Unicode sous-représente les scripts CJK avec son modèle "han unifié", mais passons à autre chose...)

Cependant, il est probable que vos programmes d'interface ne traduisent pas correctement vers/depuis UTF-8. Par exemple, ó => ó donne l'impression que les données UTF-8 (où un caractère peut être réparti sur un nombre variable d'octets) vous sont présentées à l'aide d'un codage européen à un octet, comme ISO-8859-15 ou MS- CP-1451 ou similaire.

Vous êtes probablement stocker les données correctement, mais charger à tort. Si vous utilisez simplement le mysql programme terminal ou similaire, assurez-vous que votre terminal est configuré pour utiliser UTF-8 (sur un système Unix/Linux, locale devrait probablement être quelque chose se terminant par .utf8 , par exemple. le mien a LANG=en_US.utf8 )

Si vous extrayez des données à l'aide d'un outil graphique ou similaire, vérifiez son panneau Paramètres/Préférences pour le jeu de caractères.

Si vous récupérez les caractères mal traduits dans une application que vous avez écrite, consultez les outils de votre langue pour définir les paramètres régionaux. (Peut-être que le INSERT les routines ont raison, mais le SELECT les routines se trompent ?)

Et, si cela est envoyé sur le Web, assurez-vous que vos fichiers (XML|HTML|XHTML) ont charset=utf8 déclaré au(x) lieu(x) approprié(s), ou traduire de UTF-8 au jeu de caractères de votre document (si possible) en utilisant quelque chose comme iconv lors de l'insertion de texte à partir de la base de données. (La plupart des jeux de caractères non Unicode ne peuvent représenter qu'un sous-ensemble d'Unicode, bien sûr ; par exemple, le jeu ISO-8859-15 fait un travail décent pour couvrir les langues européennes, mais ne prend pas en charge les systèmes d'écriture cyrillique, arabe ou CJK, donc il est possible d'échouer à traduire un caractère.) En Perl, vous pouvez utiliser des arguments de passage pour open ou utilisez binmode pour configurer une couche de traduction de jeu de caractères transparente sur un flux "filehandle".