mysql5.7 latins_mysql中的中文乱码处理

1、MySQL中添加中文数据乱码演示

a. 创建一个oldboy测试数据库并查看建表语句

模拟创建一个默认的字符集数据库create database oldboy default character set latin1 collate latin1_swedish_ci;

spacer.gif

2 创建一个表mysql> create table student ( id int(4) not null auto_increment, name char(20) not null, primary key(id) );

3 插入数据--插入一个应为一个中文

spacer.gif

因为库是拉丁字符集所以表默认也是拉丁字符集

spacer.gifinsert into student values (1,‘jack‘);

insert into student values (2,‘中文名字‘);

spacer.gif

4 思考

为什么插入中文数据就乱码呢

又如何解决插入中文数据乱码问题呢 带着这两个问题见下文

5 MySQL命令行 插入中文数据不乱码实战

5.1 查看建表语句mysql> show create table student\G;

*************************** 1. row ***************************

Table: student

Create Table: CREATE TABLE `student` (

`id` int(4) NOT NULL AUTO_INCREMENT,

`name` char(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

5.2 设置MySQL客户端的字符集和建表的字符集latin1 一致mysql> set names latin1;    #

mysql> insert into student values (3,‘中文名字‘);

spacer.gif

但是老的数据依然是乱码没解决

6 执行SQL文件插入中国数据不乱码实战

6.1 将要更新的多个sql语句放到文本文件文件中里如test.sql所示mysql> system cat /tmp/test.sql

set names latin1;

INSERT INTO student VALUES (8,‘老男孩‘);

提示:务必需加入set names latins;确保插入数据不乱码

6.2 在MySQL命令行通过source调用test.sql文件掺入数据mysql> source /tmp/test.sql

Query OK, 0 rows affected (0.00 sec)

Query OK, 1 row affected (0.04 sec)

mysql> select * from student;

+----+--------------+

| id | name         |

+----+--------------+

|  1 | jack         |

|  2 | ????         |

|  3 | 中文名字     |

|  8 | 老男孩       |

+----+--------------+

4 rows in set (0.00 sec)

小结:

1 DQL DML语句之前set names 系统及库表的字符集!

7 通过MySQL命令加字符集参数导入数据解决乱码

7.1 把要跟新的多个SQL语句放入文本文件中注意此次语句里不带set names latin1;

[root@log_server src]# cat /tmp/test.sqlINSERT INTO student VALUES (9,‘张三‘);

7.2 通过MySQL命令加上字符集参数指定latin1 字符集导入test.sql语句[

root@log_server

src]# mysql -uroot -p12qwaszx -S /data/3307/mysql.sock  --default-character-set=latin1 oldboy 

通过-e 参数在mysql库外查看结果[root@log_server src]# mysql -uroot -p12qwaszx -S /data/3307/mysql.sock   -e " set names latin1; select * from oldboy.student"

+----+--------------+

| id | name         |

+----+--------------+

|  1 | jack         |

|  2 | ????         |

|  3 | 中文名字     |

|  8 | 老男孩       |

|  9 | 张三         |

+----+--------------+

[root@log_server src]# mysql -uroot -p12qwaszx -S /data/3307/mysql.sock   -e "select * from oldboy.student"

+----+-----------------------------+

| id | name                        |

+----+-----------------------------+

|  1 | jack                        |

|  2 | ????                        |

|  3 | -–-—                |

|  8 | è”·-                   |

|  9 |  ‰                      |

+----+-----------------------------+

8 在my.cnf 配置文件中永久指定 同一字符集

更改my.cnf客户端模块可以实现set name latin1 的效果并且永久生效

[client]

default-character-set=latin1

提示: 无需重启服务退出重新登入就生效相当于 set names latin1;

更改服务端字符集的简单的办法:

更改my.cnf参数

[mysqld]

default-character-set=latin1  适合5.1及以前版本

character-set-server=latin1   适合5.5

不乱码思想,linux系统、客服端、服务端、库表、程序字符集要统一

建议中英文使用utf8

linux系统

[root@log_server ~]# cat /etc/sysconfig/i18n

LANG="en_US.UTF-8"

SYSFONT="latarcyrheb-sun16"

MySQL客户端:

临时

set name latin1;

永久

[client]

default-character-set=latin1

服务端:

[mysqld]

default-character-set=latin1  适合5.1及以前版本

character-set-server=latin1 适合5.5

库表随服务端或者建库手工create database指定或编译安装的时候指定

查校对规则

show character set; 有默认的校对规则

show create database oldboy;

程序

如SecureCRT程序的选项设置的字符集

x

本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1761475

mysql中的中文乱码处理

标签:mysql 中文乱码

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://cuidehua.blog.51cto.com/5449828/1761475

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值