首页 » 网站建设 » phpinsertinto乱码技巧_彻底解决mysql中文乱码

phpinsertinto乱码技巧_彻底解决mysql中文乱码

访客 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

1、中文乱码

1.1、中文乱码

phpinsertinto乱码技巧_彻底解决mysql中文乱码

create table user(name varchar(11)); # 创建user表

phpinsertinto乱码技巧_彻底解决mysql中文乱码
(图片来自网络侵删)

insert into table user(\"大众carl\公众); # 添加数据

select from user;

1

2

3

这里写图片描述

insert into user value(\公众哈哈\公众);

1

无法插入中笔墨符:

这里写图片描述

1.2、查看表字符编码

mysql> show create table user \G;

1. row

Table: user

Create Table: CREATE TABLE `user` (

`name` varchar(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

1

2

3

4

5

6

7

我们可以看到表的默认字符集是latin1.

以是我们在创建表的时候就须要指定表的字符集:

create table user(name varchar(11)) default charset=utf8;

1

这样在Linux里面可以访问并且可以插入与访问这个表了。

这里写图片描述

1.3、数据库与操作系统编码

虽然在做事器端可以显示中文正常,但是在客户端可能会显示乱码。
由于我们的做事器是UTF8。

这里写图片描述

而且数据库的编码也存在问题。

这里写图片描述

这里我们可以看character_sert_database与character_set_server的字符集都是latin1.那么在mysql数据库中,server,database,table的字符集都默认是latin1.下面我们就来看看如何办理mysql乱码情形。

2、mysql设置变量的范围

2.1、session范围

查看数据库编码:

show variables like '%char%';

1

这里写图片描述

修正字符编码:

set character_set_server=utf8;

set character_set_database=utf8;

show variables like '%char%';

1

2

3

这里写图片描述

我们可以看到字符集已经修正成都是utf8了。
但是这里有一个问题,那便是我们重新打开一个命令窗口然后查看数据编码就会涌现下面的画面:

这里写图片描述

2.2、global范围

mysql设置变量的范围默认是session范围。
如果设置多个会话的字符集那么须要设置global范围:Set [global|session] variables …

set global character_set_database=utf8;

set global character_set_server=utf8;

show variables like '%char%';

1

2

3

当我们跨会话查看mysql字符集都会看到都是utf8。
如果你以为万事大吉了的话,那么你就大错特错了。

2.3、设置数据全局范围

当我们数据库重启的时候,你们创造设置global范围的值又变成latin1了。

service mysqld restart

mysql -uroot -pyourpassword

show variables like '%char%';

1

2

3

这里写图片描述

不要怕,下面请教你终极大招:

修正mysql配置文件/etc/my.cnf。

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

1

2

3

4

5

6

请把稳这几个参数配置的位置,不然可能会启动不起来mysql做事:

这里写图片描述

OK。
这下如果你重启mysql做事也会创造它的字符集是utf8.

这里写图片描述

而且我们创建表的时候不须要指定字符编码,它默认便是utf8;

drop database test;

create database test;

use test;

create table user(name varchar(11));

show create table user \G;

1

2

3

4

5

这里写图片描述

3、总结

我看网上很多答案都是直接在session级别设置mysql的字符编码,这是治标不治本的方法。
我们还是要从源头上办理这个问题。
那便是修正mysql默认的配置文件,把它的字符集修正成能够利用中笔墨符的UTF8就OK了。

相关文章

游戏本,科技与娱乐的完美融合

在当今这个信息爆炸的时代,科技的发展日新月异,各类电子产品层出不穷。其中,游戏本作为一款集高性能、便携性、娱乐性于一体的电子产品,...

网站建设 2024-12-26 阅读0 评论0

源代码大片,科技与人类命运的交响曲

随着科技的飞速发展,科幻电影逐渐成为了电影市场的一大热门。近年来,源代码大片凭借其独特的题材和精良的制作,吸引了大量观众的关注。本...

网站建设 2024-12-26 阅读0 评论0

混合控股协议,构建多元化股权结构的桥梁

随着我国市场经济体制的不断完善和深化,企业间的合作日益紧密,股权结构多元化的趋势愈发明显。混合控股协议作为一种新型股权合作方式,成...

网站建设 2024-12-26 阅读0 评论0

淘宝歪歪协议,介绍电商平台的秘密武器

在互联网高速发展的今天,电商平台已经成为人们生活中不可或缺的一部分。其中,淘宝作为我国最大的电商平台,其市场份额遥遥领先。而在这背...

网站建设 2024-12-26 阅读0 评论0

液晶屏,现代显示技术的璀璨明珠

随着科技的飞速发展,液晶屏技术在我国显示行业取得了举世瞩目的成就。作为现代显示技术的璀璨明珠,液晶屏凭借其优异的性能和广阔的应用前...

网站建设 2024-12-26 阅读0 评论0