顶部左侧内容
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

彻底解决mysql中文乱码(mysql5.5中文乱码解决)

chargingw 2024-08-06 12:45 10 浏览

mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。

1、中文乱码

1.1、中文乱码

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

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了。

相关推荐

Exchange Server 2019 实战操作指南

基本信息镜像下载地址:https://next.itellyou.cn/Original/#文档:https://learn.microsoft.com/zh-cn/Exchange/plan-and...

电脑蓝屏怎么回事(电脑蓝屏怎么回事怎样处理)

电脑在使用的过程中,突然蓝屏。电脑不定时的自动重新启动。这种情况,可以进入系统查看蓝屏日志,进行蓝屏原因分析。蓝屏日志文件位置:蓝屏分析软件:下载蓝屏分析软件DebuggingToolsfor...

Qt中编译和设置protobuf(qt 命令行编译pro)

我们在使用Qt开发做项目开发是时候,经常会进行数据的跨平台传输,就需要对数据进行序列化,序列化的方式有很多,现在项目开发最常用就是google公司开发的protobuf。今天传输播客老师就给大...

WEB安全:深入反射式dll注入技术(反射添加注解)

一、前言dll注入技术是让某个进程主动加载指定的dll的技术。恶意软件为了提高隐蔽性,通常会使用dll注入技术将自身的恶意代码以dll的形式注入高可信进程。常规的dll注入技术使用LoadLibrar...

查看系统进程进而时时警觉木马(查看当前系统的所有进程)

什么是系统的进程对于hejb的提问,不是我钻牛角尖,而是我太忙,没时间细看提问,如果我大至发现是针对主题的提问,我就答,否我就不答,见谅。最近太忙了,希望支持我,等我闲下来会好好和各位朋友交流的!!...

俄罗斯APT组织 Turla 在攻击目标系统上部署新型后门程序

思科网络安全团队Talos称,俄罗斯国家资助的APT高级持续威胁组织Turla是此前无记录的入侵美国和德国等一系列新入侵事件的幕后黑手,该APT组织创造了恶意软件TinyTurla,这个恶意软件...

Turla(又名Pensive Ursa)工具库分析

导语:PensiveUrsa工具库中最近活跃的10种恶意软件详解看过来!Turla(又名PensiveUrsa、Uroburos、Snake)是一个至少从2004年开始运行,总部位于俄罗斯的一个攻...

俄罗斯Astra推出Microsoft、Google 和 Amazon 云的自主替代品

据cnews网8月29日报道,俄罗斯AstraCloud作为AstraGroup面向商业客户,推出了MicrosoftAzure、GoogleCloud和AmazonWebServic...

微软危机!AZURE服务瘫痪引发全球Windows系统崩溃!

近日,全球范围内爆发了一场前所未有的Windows系统崩溃危机,微软公司正紧急应对。据微软发言人透露,该问题与AZURE服务相关,他们正在全力修复,并预计很快将发布解决方案。这场“微软蓝屏”事件正在...

微软宣布于2024年11月1日终止对Azure账户的TLS 1.0/1.1支持

IT之家1月11日消息,微软宣布,将取消对所有云中现有Azure账户的传输层安全性(TLS)1.0和1.1的支持。2024年11月1日后,TLS1.2将成为Azure...

微软发布0.7预览版Dev Home更新:支持Azure扩展

IT之家11月23日消息,微软今天更新了DevHome应用,推出了0.7预览版更新,最大的亮点是支持Azure扩展,其中包括AzureDevOps(ADO)和ADO小...

微软Windows Server 26280预览版发布,调整有效期

IT之家9月7日消息,微软面向WindowsServerInsider项目成员,发布了Build26280预览版更新,最大的变化就是到期日期调整为2025年9月15日...

微软发布Windows Server 2025最新预览版26244

IT之家6月29日消息,微软公司今天面向Canary频道发布Windows11Build26244预览版更新之外,还发布了WindowsServerBuild26244...

微软将CBL-Mariner Linux发行版项目更名为“Azure Linux”

IT之家3月6日消息,CBL-Mariner是适用于微软云基础设施以及边缘产品和服务的内部Linux发行版,其中CBL是指“CommonBaseLinux”,而现在该发行版似乎...

现已修复,微软Microsoft 365云服务再次出现全球性宕机

IT之家7月31日消息,在影响全球850万台设备的蓝屏故障之后,微软旗下365云服务再次出现宕机事件,包括Word、PowerPoint和Outlook等云服务应用均无法正常使...