J'ai googlé beaucoup sur ce problème. Pour résumer, voici ce que mon my.ini
ressemble à:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
Quand je vais dans mysql via cmd et émets: show variables like "%character%";show variables like "%collation%";
, voici ce que j'ai:
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\env\MySQL5.6\share\charsets\ |
+--------------------------+---------------------------------+
8 rows in set (0.00 sec)
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-------------------+
J'ai déjà redémarré le service MySQL, donc quelqu'un pourrait-il me donner une idée de la façon de modifier character_set_database
aussi bien que collation_database
à utf8
? Merci beaucoup.
Ce n'est en fait pas un paramètre dans le my.cnf
(ou my.ini
dans ce cas). mySQL obtient ce paramètre du propre classement de la base de données (quand il a été créé). Pour obtenir cela en ligne avec l'encodage utf8 que vous souhaitez, procédez comme suit:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
puis faites un redémarrage sur mysql (je ne peux pas me rappeler si c'est nécessaire), suivi d'un:
SHOW VARIABLES;
Tout devrait bien aller, j'espère que ça aide!
note de côté: je pense que default-character-set
est obsolète de nos jours (mySQL 5.5+) et semble rendre le fichier de configuration agité.
Je fais un résumé:
déterminez quels jeux de caractères/collations sont disponibles
SHOW CHARSET;
SHOW COLLATION;
vérifier le jeu de caractères
SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';
set charset (dans le fichier de configuration -> my.cnf)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
vérifier le jeu de caractères de la base de données/table
SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;
changer le jeu de caractères de la base de données/table :
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
défini lors de la création de la base de données/table:
CREATE DATABASE new_db CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
Note : J'ai entendu dire que dans Mysql utf8 n'est pas le vrai utf8 , utf8mb4 est le vrai utf8. donc, si vous avez un caractère spécial qui ne peut pas être sauvegardé dans mysql, vous devriez peut-être utiliser utf8mb4 et utf8mb4_general_ci
Comment configurer Character Set
et Collation
.
Pour les applications qui stockent des données à l'aide du jeu de caractères et du classement MySQL par défaut (
latin1, latin1_swedish_ci
), aucune configuration spéciale ne devrait être nécessaire. Si les applications nécessitent un stockage de données à l'aide d'un jeu de caractères ou d'un classement différent, vous pouvez configurer les informations de jeu de caractères de plusieurs manières:
utf8
, alors que les applications qui utilisent une autre base de données peuvent nécessiter des sjis.Les exemples présentés ici pour votre question pour définir le jeu de caractères utf8, définissent également ici le classement pour plus utile (utf8_general_ci
collation`).
Spécifiez les paramètres de caractères par base de données
CREATE DATABASE new_db
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
Spécifiez les paramètres des caractères au démarrage du serveur
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
Spécifiez les paramètres de caractères lors de la configuration de MySQL
Shell> cmake . -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
Cette réponse peut être longue, mais vous pouvez l'utiliser. J'espère que ma réponse vous sera utile. pour plus d'informations http://dev.mysql.com/doc/refman/5.7/en/charset-applications.html