mysql是我们项目中非经常常使用的数据型数据库。

可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况。以下就来介绍一下怎样彻底解决数据库中文乱码情况。

1、中文乱码

1.1、中文乱码

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

insert into table user("carl"); # 加入数据

select * from user;

insert into user value("哈哈");

无法插入中文字符:

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)

我们能够看到表的默认字符集是latin1.

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

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

这样在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%';

改动字符编码:

set character_set_server=utf8;

set character_set_database=utf8;

show variables like '%char%';

我们能够看到字符集已经改动成都是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%';

当我们跨会话查看mysql字符集都会看到都是utf8。

假设你以为万事大吉了的话。那么你就大错特错了。

2.3、设置数据全局范围

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

service mysqld restart

mysql -uroot -pyourpassword

show variables like '%char%';

不要怕,以下就教你终极大招:

改动mysql配置文件/etc/my.cnf。

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

请注意这几个參数配置的位置,不然可能会启动不起来mysql服务:

OK。这下假设你重新启动mysql服务也会发现它的字符集是utf8.

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

drop database test;

create database test;

use test;

create table user(name varchar(11));

show create table user \G;

3、总结

我看网上非常多答案都是直接在session级别设置mysql的字符编码,这是治标不治本的方法。我们还是要从源头上解决问题。那就是改动mysql默认的配置文件,把它的字符集改动成能够使用中文字符的UTF8就OK了。

彻底mysql中文乱码问题_彻底解决mysql中文乱码相关推荐

  1. mysql 删表卡死_如何解决mysql 删表卡住的问题

    如何解决mysql 删表卡住的问题 mysql删表卡住的解决办法:首先执行"show full processlist;"语句:然后执行"kill processid;& ...

  2. 安装mysql程序运行出错_如何解决mysql安装后.net程序运行出错的问题

    如何解决mysql安装后.net程序运行出错的问题 发布时间:2020-09-28 17:43:58 来源:亿速云 阅读:93 作者:小新 小编给大家分享一下如何解决mysql安装后.net程序运行出 ...

  3. 解决mysql的乱码问题_完美解决mysql中文乱码的问题

    MySQL(和PHP搭配之最佳组合)中文乱码的原因 MySQL(和PHP搭配之最佳组合)会出现中文乱码的原因不外乎下列几点: MySQL(和PHP搭配之最佳组合) server本身设定问题,例如还停留 ...

  4. mysql字符乱码百度_如何解决MySQL字符集乱码问题

    变量 @a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 @a 的编码. 2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACT ...

  5. 解决mysql不能修改密码_如何解决mysql修改密码后不能成功登录_数据库_mysql修改密码_课课家...

    今天给大家解决下MySQL修改密码后导致不能登录的问题,一般我们都知道mysql4.1.1版本后修改了用户密码的格式,一旦修改了密码,4.1.1以前的版本上是不能进行成功登录的,那么对于这些问题该如何 ...

  6. mysql如何处理图片吗_如何解决mysql插入图片后缀名问题?

    inventory是库存 里边包括pic这个字段,现在要是先从inventory把图片选择出来,并插入record的pic中,但是插入之后图片的后缀名(jpg)没有了?如何解决?? 下面这个是inve ...

  7. mysql 分表插入_如何解决MySQL分表与新数据的插入

    抱歉我忽视了用户名如今已经不是单一的登陆查询和用户识别的依据了. 现在这个时代,登录的依据如此庞杂(手机.邮箱.用户名.各种第三方认证),并且一个人往往有多个登录入口,总不可能把每个人的数据重复存储多 ...

  8. mysql 分表 导入_如何解决MySQL分表与新数据的插入

    抱歉我忽视了用户名如今已经不是单一的登陆查询和用户识别的依据了. 现在这个时代,登录的依据如此庞杂(手机.邮箱.用户名.各种第三方认证),并且一个人往往有多个登录入口,总不可能把每个人的数据重复存储多 ...

  9. mysql linux 中文乱码怎么解决_如何解决mysql linux 中文乱码的问题

    解决mysql linux中文乱码的方法: 1.查看mysql的默认字符集#mysql -u root - p #(输入密码) mysql> show variables like 'chara ...

最新文章

  1. OpenGL ES3 非常好的系列文章
  2. .NET3.5中的高性能 Socket API
  3. 《直播疑难杂症排查》之四:延时高
  4. Win8 IIS 安装和部署网站问题
  5. jsk Star War (线段树维护区间最小最大值 + 二分)
  6. mysql多线程导出_MySQL多线程导入导出工具Mydumper
  7. 阿里2018校招编程题
  8. const常类型说明
  9. 模板文件不存在,无法解析文档!的终极解决方案
  10. STM8L USART串口使用
  11. 雅虎 (YAHOO)相册下载工具 Beta1 发布
  12. BGP路由聚合原理和实验(华为设备)
  13. MySQL 归档数据的方法你知道了吗
  14. LaTeX公式编辑器+mathtype6.9b
  15. 微信小程序修改data,页面数据实时更新
  16. 联想凌拓“开业大吉” 是试水还是全面变革的前兆?
  17. Discuz 批量修改、替换帖子标题或内容
  18. 微软2013暑假实习生笔试题解析
  19. linux文件中的换行符,Linux中的换行符
  20. 2022焊工(高级)培训试题及答案

热门文章

  1. 百度云人脸识别接口+python+opencv做的表情包合成器
  2. kafka从入门到精通:mysql绿色版闪退
  3. Lipschitz函数
  4. vue页面截图用html2canvas截图不完整有滚动条+有echarts图表时完整截图——截图保存为图片或pdf
  5. I5 3470处理器更换I7 3770性能会有多大提升?
  6. (转)HTC宏达与多普达间的关系
  7. 投资理财一点都不难001
  8. 【hessian】一 hessian 基本介绍
  9. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总,icloudpassbook
  10. VIM-状态栏插件(powerline)