搜索
首页数据库mysql教程MySql中SETNAMESutf8详解(乱码原理)_MySQL



不多说,先上图

\

分析:

set names utf8之前,

character_set_client | gbk

character_set_connection| gbk

character_set_results | gbk

set names utf8之后,

character_set_client | utf8

character_set_connection| utf8

character_set_results | utf8

关于字符集可参照mysql中文手册

地址:http://dev.mysql.com/doc/refman/5.1/zh/charset.html#charset-connection

以下是部分摘录:

在客户端和服务器的连接处理中也涉及了字符集和校对规则变量。每一个客户端有一个连接相关的字符集和校对规则变量。

考虑什么是一个“连接”:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和校对规则的问题,这些问题均能够通过系统变量来解决:

· 当查询离开客户端后,在查询中使用哪种字符集?

服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

· 服务器接收到查询后应该转换为哪种字符集?

转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的校对规则优先级。

· 服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?

character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

你能够调整这些变量的设置,或可以依赖默认值(这样,你可以跳过本章)。

有两个语句影响连接字符集:

SET NAMES 'charset_name'

SET CHARACTERSETcharset_name

SET NAMES 'x'语句与这三个语句等价:

mysql>SETcharacter_set_client = x;

mysql>SETcharacter_set_results = x;

mysql>SETcharacter_set_connection = x;

所以说:

set names utf8指定了客户端和服务器之间传递字符的编码规则为UTF8。

修改MySql默认编码

MySql默认编码是Latin1,不支持中文,要想修改默认编码,需要修改my.ini文件

[client]增加default-character-set=utf8

[mysql]增加default-character-set=utf8

[mysqld]增加

character_set_server=utf8

init_connect='SET NAMES utf8'

cmd下操作mysql乱码需要注意cmd编码

查看当前代码页,如果当前代码页是GBK那么需要set names GBK才可以保证不乱码。

chcp 65001/936修改代码页。完美解决乱码问题。


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php 导入csv乱码问题怎么办php 导入csv乱码问题怎么办Nov 21, 2022 am 09:32 AM

php导入csv乱码问题的解决办法:1、构造一个解析函数“function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}”;2、读取文件到变量;3、通过“substr($s,2)”去掉BOM头即可。

cmd php乱码怎么办cmd php乱码怎么办Nov 22, 2022 am 10:29 AM

cmd php乱码的解决办法:1、在windows平台的cmd或shellpower中,执行php脚本并检查是否乱码;2、通过在php脚本里执行“exec("CHCP 65001");”命令去修改当前页码字符集即可。

php+fread()乱码怎么办php+fread()乱码怎么办Jan 18, 2023 am 10:21 AM

php+fread()乱码是因为输出页面的编码和被读文件的编码不一致,其解决办法:1、打开相应的PHP文件;2、通过fread函数读取文件;3、通过“iconv('gbk', 'utf-8', $data)”方法将读取的内容转码即可。

linux命令行显示乱码怎么办linux命令行显示乱码怎么办Mar 03, 2023 am 09:30 AM

linux命令行显示乱码的解决办法:1、通过“echo $LANG”命令查看当前支持的语言;2、使用“LANG=en_US”命令修改语言为英语语系即可解决乱码问题。

wordpress后台乱码怎么办wordpress后台乱码怎么办Feb 03, 2023 pm 01:48 PM

wordpress后台乱码的解决办法:1、在wordpress的“wp-admin”文件夹下找到“admin.header.php”文件;2、将“charset”属性值设置为“UTF-8”格式即可恢复正常。

如何解决php写入数据库中文乱码问题如何解决php写入数据库中文乱码问题Sep 25, 2021 am 10:29 AM

php写入数据库中文乱码的解决办法:1、创建数据库并设置“utf8_general_ci”编码;2、用PHP读写数据库,然后设置“mysql_query("set names 'utf8'");”即可。

mysql注释乱码问题怎么解决mysql注释乱码问题怎么解决Feb 13, 2023 am 09:44 AM

mysql注释乱码问题的解决办法:1、通过“show variables like '%colla%';show variables like '%char%';”命令查看数据库与服务端的字符集设置;2、通过“set character_set_client=utf8;”设置结果集为utf8即可。

php dompdf中文乱码怎么办php dompdf中文乱码怎么办Jan 18, 2023 am 10:34 AM

php dompdf中文乱码的解决办法:1、打开前端文件;2、通过设置“@font-face {font-family:ttt;src: url(/static/font/simkai.ttf)}”引用中文字体;3、删除“dompdf_font_family_cache.php”即可。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境