linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结
前言:
字符集就是一套文字符号及其编码比较规则的集合。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带字符集登录原理也是临时修改那三个参数。
一技之长,理财投资,写作思考 敬请关注“石林笔记”公众号或者扫我喲:
linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结相关推荐
- linux下mysql乱码_linux下mysql中文乱码
登录mysql执行 mysql> show variables like 'character%'; 发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my ...
- linux mysql 日志乱码_Linux下MySQL保存进去数据为乱码的解决办法
mysql默认的字符编码是latin1,而我用的是utf-8,存入数据库就变成了?????这样的乱码,解决方法: 1.windows下:修改my.ini文件,有 mysql默认的字符编码是latin1 ...
- linux安装mysql字符_Linux下MySQL的彻底卸载和安装配置字符集
前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...
- linux mysql 定时任务_Linux下Mysql定时任务备份数据的实现方法
前言 备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程.而对于一些网站.系统来说,数据库就是一切,所以做好数据 ...
- linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)
1,linux下启动mysql的命令: 复制代码 代码示例: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2,linux下重启my ...
- linux mysql 事务_linux下mysql Insert update delete 事务 用户管理
linux下mysql Insert update delete 事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES ...
- linux重新安装mysql步骤_Linux下MySQL安装及相关操作过程
一.安装MySQL数据库,但是前提是已经安好Linux系统,我使用的是Red hat desktop 6.0 SP1,系统盘的Tools里面有相应的软件,为5.0系列,但经测试无法使用,不能正常运行, ...
- linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL
bitsCN.com linux下mysql自动备份数据库与自动删除临时文件 一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表:crontab -l然后新建:crontab - ...
- linux mysql 临时文件_linux下mysql自动备份数据库与自动删除临时文件
一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表: crontab -l 然后新建: crontab -e 添加一行: 00 03 * * * rm -rf /www/cmst ...
最新文章
- iview Table列表中增加字体图标
- cnn 一维时序数据_蚂蚁集团智能监控的时序异常检测:基于 CNN 神经网络的异常检测...
- Python应用实战-用Python爬取数据分析岗位信息并可视化分析
- SpringSide示例之HelloWorld
- 【HDU - 3410 】 Passing the Message(单调栈)
- linux导出表数据dmp,导出表的部分数据到dmp文件中
- Redis cluster不能发布在与 springboot 相同的物理磁盘上,否则找不到集群。
- 淡定!不要因为纳入了高考和二级考试甚至极个别小学课程就盲目夸大Python!...
- PHP 程序员的技术成长规划
- 软件设计师23-存储器系统02
- 限量!“Java 成长笔记” Spring Boot/Sentinel/Nacos 高并发
- 求素数 java 101 200_JAVA编程题2 101——200素数个数
- php爬虫亚马逊,亚马逊爬虫(亚马逊 api)
- 基于WEB的PDF打印——浏览器中静默打印PDF文件
- UDP实时图像传输进阶篇——1080P视频传输
- CTF中简单杂项小结
- esp32 s3 外部flash和外部psram配置
- Cocos Creator:高效率内容生产,引领全平台制霸!
- 肝内胆管结石有哪些严重危害?
- mac下 Github添加SSH keys
热门文章
- rpm apache2 啟動vhost .htaccess讀取問題
- myeclipse+tomcat-热部署
- 猜51CTO的人群结构
- i5700 预,链接
- FreeBSD 恢复root密码-FreeBSD 5 或都之后版本.
- 图解分析:基于setnx的分布式锁有什么缺陷
- matlab 二维数组转一维数组中,将二维数组映射到一维数组上
- python在windows 输入和输出文件_Python文件、目录和输入输出操作
- 武汉大学计算机专业录取分数线,最新武汉大学专业排名录取分数线
- linux jar运行监控 mo,linux系统监控利器--monit