ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql数据库插入中文出现乱码相关

2019-06-21 15:55:50  阅读:250  来源: 互联网

标签:set utf8 数据库 mysql character 乱码 dept tbl Mysql


查看数据库编码的命令:show variables like "character%";
mysql> show variables like "character%";
+--------------------------+----------------------------+
| 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     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

  有关上面八个character_set相关的变量代表的意思:

1. character_set_client
主要用来设置客户端使用的字符集。
2. character_set_connection
主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。
3. character_set_database
主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。
4. character_set_filesystem
文件系统的编码格式,吧操作系统上面的文件名转化成此字符集,即把character_set_client转换character_set_filesystem,默认binary不做任何转换。
5. character_set_results
数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。
6. character_set_server
服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要认为指定。
7. character_set_system
数据库系统使用的编码格式,这个值一直时utf8,不需要设置,它是存储系统元数据的编码格式。
8. character_sets_dir
这个变量是字符集安装的目录。


 

修改指定编码为utf-8,在/etc/mysql/my.cnf中添加以下内容,添加完后重启mysql服务(sudo systemctl restart mysql)。

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

已经创建的表里面的字符集还没有被改过来。

mysql> show create table tbl_dept;
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                   |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl_dept | CREATE TABLE `tbl_dept` (
  `dept_id` int(11) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(255) NOT NULL,
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table tbl_dept convert to character set utf8;

Query OK, 6 rows affected (0.18 sec)
Records: 6 Duplicates: 0 Warnings: 0

mysql>
mysql> show create table tbl_dept;
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl_dept | CREATE TABLE `tbl_dept` (
`dept_id` int(11) NOT NULL AUTO_INCREMENT,
`dept_name` varchar(255) NOT NULL,
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

需要使用以下修改语句

查看表编码
show create table tbl_dept;
修改表编码
alter table tbl_dept convert to character set utf8;

 

 

 

 

参考:https://blog.csdn.net/sun8112133/article/details/79921734

           https://dev.mysql.com/doc/refman/5.7/en/faqs-cjk.html

           http://www.pianshen.com/article/663784398/

      https://www.cnblogs.com/lynlovehyl/articles/6642792.html  

标签:set,utf8,数据库,mysql,character,乱码,dept,tbl,Mysql
来源: https://www.cnblogs.com/kgtone/p/11064966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有