前言:

字符集就是一套文字符号及其编码比较规则的集合。MySQL数据库字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念。其中,字符集用来定义MySQL数据字符串的存储方式。而校对规则是定义比较字符串的方式。不乱码的总体原则是部署的java程序,Linux系统,MySQL客户端,MySQL服务端,

MySQL的某个库,MySQL的某个库下表的字符集统一。

1>java程序中设置:页面中:contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"

request.setCharacterEncoding("utf-8");

2>linux系统查看字符集:

A>查看Linux系统字符集(Centos7)

[root@lll2 /]# cat /etc/locale.conf

LANG="zh_CN.UTF-8"

B>修改Linux系统字符集

[root@lll2 /]# vim /etc/locale.conf

3>MySQL客户端(默认情况下 character_set_client,character_set_connection,character_set_results 会根据你Linux系统设置的字符集,而设置成什么字符集):

A>查看MySQL客户端字符集

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.03 sec)

B>修改MySQL客户端字符集

[client]
#password= your_password
port= 3306
socket= /tmp/mysqld.sock

default-character-set=utf8

注意:通过/etc/my.conf下修改MySQL客户端字符集不需要重启MySQL,退出重新登录就生效。

4>MySQL服务端:

A>查看MySQL客户端字符集

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+

B>修改MySQL服务器端字符集

[mysqld]
port= 3306
socket= /tmp/mysqld.sock
character_set_server=utf8
skip-external-locking
#character_set_server=utf-8    适用于5.5
#default_character_set=utf-8 适用于5.1及以下

总结:A.通过/etc/my.conf下修改MySQL服务端字符集都需要重启MySQL来生效。

B.在/etc/my.conf下修改MySQL服务端字符集会修改character_set_server,character_set_database两个参数。

5>MySQL的某个库( 如果建库时没有指定字符集,则该库会默认使用character_set_server的字符集)

A>查看创建库的字符集

mysql> show create database mysql\G;
*************************** 1. row ***************************Database: mysql
Create Database: CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.06 sec)
B>修改库的字符集
alter database mysql character set utf8;

6>MySQL库下的表(如果建表时没有指定字符集则默认使用所属库的字符集,表中的列没有指定字符集默认都使用表的字符集)

A>查看创建表时的字符集

mysql> show create table user\G;
*************************** 1. row ***************************Table: user
Create Table: CREATE TABLE `user` (`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',`ssl_cipher` blob NOT NULL,`x509_issuer` blob NOT NULL,`x509_subject` blob NOT NULL,`max_questions` int(11) unsigned NOT NULL DEFAULT '0',`max_updates` int(11) unsigned NOT NULL DEFAULT '0',`max_connections` int(11) unsigned NOT NULL DEFAULT '0',`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',`plugin` char(64) COLLATE utf8_bin DEFAULT '',`authentication_string` text COLLATE utf8_bin,PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
1 row in set (0.06 sec)
B>修改表的字符集
alter table user convert to character set utf8;

7>set names latin1背后的原理

mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.01 sec)
mysql> set names latin1;
Query OK, 0 rows affected (0.01 sec)
mysql> show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | latin1                                    |
| character_set_connection | latin1                                    |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | latin1                                    |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)

总结:

set names latin1就是把上面三个参数改成了latin1。也就是说character_set_client,character_set_connection,character_set_results三者的字符集默认会和

linux系统的字符集一致,但是当在mysql中执行set names字符集操作后,这三者都会改为设置的字符集,但是命令修改时临时生效的。

root@lll2 /]# mysql -u root -p --default-character-set=latin1带字符集登录原理也是临时修改那三个参数。

转载于:https://blog.51cto.com/11218855/2283611

Linux下MySQL的字符集乱码问题总结相关推荐

  1. linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结

    前言: 字符集就是一套文字符号及其编码比较规则的集合.MySQL数据库字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念.其中,字符集用来定义MySQL数据字符串的存储方式 ...

  2. linux下mysql修改字符集,远程连接

    安装时候很简单,但是安装了后一般不能用 安装后 首先执行 mysql -u root mysql 这是就会进入mysql命令窗口,这样是可以使用的,但是我们要先设置密码 1.先设置密码 UPDATE ...

  3. linux下mysql乱码_linux下mysql中文乱码

    登录mysql执行 mysql> show variables like 'character%'; 发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my ...

  4. linux修改mysql字符集6,linux下mysql字符集编码问题的修改

    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...

  5. Linux下mysql支持中文,linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

  6. Linux下MySQL的安装与使用

    安装前 工具 Centos7 Xshell Xftp 查看是否安装过MySQL 如果你是用rpm安装, 检查一下RPM PACKAGE: rpm -qa | grep -i mysql # -i 忽略 ...

  7. oracle11g怎么显示中文,ORACLE11G中PLSQL中文显示乱码、Linux下sqlplus查询中文乱码

    问题描述: 本地是win7操作系统,cmd里面sqlplus进去连接oracle数据库,中文可以正常显示,但是plsql连接oracle数据库,中文显示乱码,还有xshell远程连接oracle服务器 ...

  8. Linux下Mysql数据库的基础操作

    Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...

  9. linux下mysql目录结构_linux下mysql安装配置与目录结构

    本节内容: linux下mysql安装与配置.mysql目录结构. 1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rp ...

最新文章

  1. 2021年春季学期-信号与系统-第十四次作业参考答案-第八小题参考答案
  2. 日志分析平台ELK部署初学
  3. Windows服务器修改默认TTL值的方法
  4. linux查文件名称唯美,第二章、Linux常用命令
  5. 中国大学前10强!校友会2020世界一流大学排名发布
  6. 云计算管理三利器:Nagios、Ganglia和Splunk
  7. 【Rxjs】 - 解析四种主题Subject
  8. [数据结构]二叉树的性质
  9. (37)System Verilog线程并行执行(fork-join_any)
  10. mysql 安装、建库、导入导出数据
  11. 解决Spring框架下中文乱码的问题
  12. java的main是主线程吗_main函数是主线程吗
  13. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
  14. WCF简单教程(2) 聊聊binding
  15. linux x86软件改arm,x86程序移植到arm上
  16. 奇虎周鸿祎:创业者不要太偏执
  17. 麒麟座IIC-STM32F103RET6(2)-完成US延时
  18. 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
  19. 缓冲区溢出漏洞浅析(三)
  20. 三相桥式全控整流电路matlab仿真实验,三相全控桥式整流电路仿真实验

热门文章

  1. ExtJS入门教程03,form中怎能没有validation
  2. Composer使用
  3. crypt函数的使用(仅限LINUX)
  4. 北京的CCIE考试面试变成中文了
  5. 企业防火墙之iptables
  6. poj 2337 Catenyms 【欧拉路径】
  7. 第十二周项目4-点、圆的关系
  8. 架构体系需要进一步研究探索的V2路线图
  9. 设计模式(十五):Iterator迭代器模式 -- 行为型模式
  10. git push throws error: RPC failed; result=22, HTTP