Maison base de données tutoriel mysql MySql字符集常见问题的解决

MySql字符集常见问题的解决

Jun 07, 2016 pm 04:11 PM
mysql principal 介绍 字符集 常见 article 解决

以下的文章主要介绍的是MySql字符集的相关问题的解决,其中包括ROR+Mysql5 utf8 搭配问题的实际解决方案 ,Mysql数据库的中文问题的解决与mssqlserver 数据库转换mysql 出现乱码问题 。 更多相关推荐 最近在登陆公司服务器上的数据库时,在命令行里执行查询语

以下的文章主要介绍的是MySql字符集的相关问题的解决,其中包括ROR+Mysql5 utf8 搭配问题的实际解决方案 ,Mysql数据库的中文问题的解决与mssqlserver 数据库转换mysql 出现乱码问题 。

更多相关推荐 最近在登陆公司服务器上的数据库时,在命令行里执行查询语句时候得到的结果只要是中文,就全部是乱码,很让人头疼呀,,查了些资料总结一下.作为自己以后的参考.

MySQL的字符集支持(Character Set Support)有两个方面:MySql字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次:
服务器(server),数据库(database),数据表(table)和连接(connection)。

1.MySQL默认字符集:MySQL对于字符集的指定可以细化到一个数据库,一张表,一列.传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置.

(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;

(4)当创建一个新的数据库时,除非明确指定,这个数据库的MySql字符集被缺省设定为character_set_server;

(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;

(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

2.查看默认MySql字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> SHOW VARIABLES LIKE 'character%';  </span></span></li>
<li><span>+--------------------------+---------------------------------+  </span></li>
<li class="alt"><span>| Variable_name | Value |  </span></li>
<li><span>+--------------------------+---------------------------------+  </span></li>
<li class="alt"><span>| character_set_client | latin1 |  </span></li>
<li><span>| character_set_connection | latin1 |  </span></li>
<li class="alt"><span>| character_set_database | latin1 |  </span></li>
<li><span>| character_set_filesystem | binary |  </span></li>
<li class="alt"><span>| character_set_results | latin1 |  </span></li>
<li><span>| character_set_server | latin1 |  </span></li>
<li class="alt"><span>| character_set_system | utf8 |  </span></li>
<li><span>| character_sets_dir | D:"mysql-5.0.37"share"charsets" |  </span></li>
<li class="alt"><span>+--------------------------+---------------------------------+  </span></li>
<li>
<span>mysql</span><span class="tag">></span><span> SHOW VARIABLES LIKE 'collation_%';  </span>
</li>
<li class="alt"><span>+----------------------+-----------------+  </span></li>
<li><span>| Variable_name | Value |  </span></li>
<li class="alt"><span>+----------------------+-----------------+  </span></li>
<li><span>| collation_connection | utf8_general_ci |  </span></li>
<li class="alt"><span>| collation_database | utf8_general_ci |  </span></li>
<li><span>| collation_server | utf8_general_ci |  </span></li>
<li class="alt"><span>+----------------------+-----------------+ </span></li>
</ol>
Copier après la connexion

3.修改默认字符集

(1) 最简单的修改方法,就是修改mysql的my.ini文件中的MySql字符集键值,

<ol class="dp-xml">
<li class="alt"><span><span class="attribute">default-character-set</span><span> = </span><span class="attribute-value">utf8</span><span> </span></span></li>
<li>
<span class="attribute">character_set_server</span><span> = </span><span class="attribute-value">utf8</span><span> </span>
</li>
</ol>
Copier après la connexion

修改完后,重启mysql的服务,service mysql restart

使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8

<ol class="dp-xml">
<li class="alt"><span><span>+--------------------------+---------------------------------+  </span></span></li>
<li><span>| Variable_name | Value |  </span></li>
<li class="alt"><span>+--------------------------+---------------------------------+  </span></li>
<li><span>| character_set_client | utf8 |  </span></li>
<li class="alt"><span>| character_set_connection | utf8 |  </span></li>
<li><span>| character_set_database | utf8 |  </span></li>
<li class="alt"><span>| character_set_filesystem | binary |  </span></li>
<li><span>| character_set_results | utf8 |  </span></li>
<li class="alt"><span>| character_set_server | utf8 |  </span></li>
<li><span>| character_set_system | utf8 |  </span></li>
<li class="alt"><span>| character_sets_dir | D:"mysql-5.0.37"share"charsets" |  </span></li>
<li><span>+--------------------------+---------------------------------+ </span></li>
</ol><br>
Copier après la connexion

(2) 还有一种修改字符集的方法,就是使用mysql的命令

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">character_set_client</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">character_set_connection</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">character_set_database</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">character_set_results</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">character_set_server</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">collation_connection</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li class="alt">
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">collation_database</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
<li>
<span>mysql</span><span class="tag">></span><span> SET </span><span class="attribute">collation_server</span><span> = </span><span class="attribute-value">utf8</span><span> ;  </span>
</li>
</ol>
Copier après la connexion

一般就算设置了表的默认MySql字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:

<ol class="dp-xml"><li class="alt"><span><span>SET NAMES 'utf8'; </span></span></li></ol>
Copier après la connexion

它相当于下面的三句指令:

<ol class="dp-xml">
<li class="alt"><span><span>SET </span><span class="attribute">character_set_client</span><span> = </span><span class="attribute-value">utf8</span><span>;  </span></span></li>
<li>
<span>SET </span><span class="attribute">character_set_results</span><span> = </span><span class="attribute-value">utf8</span><span>;  </span>
</li>
<li class="alt">
<span>SET </span><span class="attribute">character_set_connection</span><span> = </span><span class="attribute-value">utf8</span><span>; </span>
</li>
</ol>
Copier après la connexion

不知道什么原因,我在自己机器上把上述三个MySql字符集都设置成utf8后,查询中文结果还是乱码,只有把character_set_results设置成GBK之后才能从命令行正常显示中文.
 


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL: la facilité de gestion des données pour les débutants MySQL: la facilité de gestion des données pour les débutants Apr 09, 2025 am 12:07 AM

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Puis-je récupérer le mot de passe de la base de données dans Navicat? Puis-je récupérer le mot de passe de la base de données dans Navicat? Apr 08, 2025 pm 09:51 PM

Navicat lui-même ne stocke pas le mot de passe de la base de données et ne peut récupérer que le mot de passe chiffré. Solution: 1. Vérifiez le gestionnaire de mots de passe; 2. Vérifiez la fonction "Remember Motway" de Navicat; 3. Réinitialisez le mot de passe de la base de données; 4. Contactez l'administrateur de la base de données.

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

Comment afficher le mot de passe de la base de données dans NAVICAT pour MARIADB? Comment afficher le mot de passe de la base de données dans NAVICAT pour MARIADB? Apr 08, 2025 pm 09:18 PM

NAVICAT pour MARIADB ne peut pas afficher directement le mot de passe de la base de données car le mot de passe est stocké sous forme cryptée. Pour garantir la sécurité de la base de données, il existe trois façons de réinitialiser votre mot de passe: réinitialisez votre mot de passe via Navicat et définissez un mot de passe complexe. Affichez le fichier de configuration (non recommandé, haut risque). Utilisez des outils de ligne de commande système (non recommandés, vous devez être compétent dans les outils de ligne de commande).

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Comment exécuter SQL dans Navicat Comment exécuter SQL dans Navicat Apr 08, 2025 pm 11:42 PM

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Navicat ne peut pas se connecter à MySQL / MARIADB / POSTRESQL et à d'autres bases de données Navicat ne peut pas se connecter à MySQL / MARIADB / POSTRESQL et à d'autres bases de données Apr 08, 2025 pm 11:00 PM

Raisons courantes pour lesquelles Navicat ne peut pas se connecter à la base de données et à ses solutions: 1. Vérifiez l'état d'exécution du serveur; 2. Vérifiez les informations de connexion; 3. Réglez les paramètres du pare-feu; 4. Configurer l'accès à distance; 5. Dépannage des problèmes de réseau; 6. Vérifier les autorisations; 7. Assurer la compatibilité de la version; 8. Dépannage d'autres possibilités.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

See all articles