
Mysql:插入中文失败,校对集问题(数据比较的方式)、Web乱码问题
发布日期:2021-05-07 14:07:59
浏览次数:17
分类:原创文章
本文共 1122 字,大约阅读时间需要 3 分钟。
目录
插入中文失败
中文数据问题本质就是字符集问题
计算机识别二进制:人类更多是识别符号:需要由两个二进制与字符的对应关系(字符集)
原因是:客户端与服务端编不统一问题;服务器没有识别对应的四个字节:服务器认为数据是UTF8,一个汉字有三个字节:读取三个字节转化成汉字(失败),剩余的读在读取三个字节(不够):最终失败
GBK:2个字节数是一个汉字
UTF-8:3个字节数是一个汉字
分析:
1、查看服务器支持哪些字符集
show character set:
2、查看服务器默认对外处理的字符集
show variables like 'character_set%'
3、问题根源:客户端数据只能是GBK,而服务器认为是UTF_8:矛盾产生
- 解决方案:改变服务器,默认的接受字符集为GBK:
- Set character_set_client = gbk;
4、connection连接层字符集:是字符集转变的中间着,如果统一效率更高,不统一也没有问题
5、插入中文查看数据效果:依然是乱码:
- 原因:数据来源是服务器,解析数据时客户端(客户端只识别GBK::只会两个字节一个汉字);但是事实服务器给的数据却是UTF8,三个字节一个汉字:乱码)
- 解决方案:修改服务器给客户端的数据字符集为GBK
- Set character_set_results=GBK:
注意:
Set 变量 =值:修改只是会话级别(当前客户端,当次连接有效:关闭无效)
设置服务器对客户端的字符集的认识:可以使用快捷方式:set names 字符集
set names gbk;
校对集问题(数据比较的方式)
校对集有三种方式
- _bin:binary,二进制比较,去除二进制,一位一位的比较,区分大小写
- _cs:case sensitive,大小写铭感,区分大小写
- _ci:case insensitice,大小写不敏感,不区分大小写
查看数据库支持的校对集 :show collation;
- yes;代表默认不支持大小写
- 校对集应用:只有数据产生比较的时候,校对集才会生效
- 数据进行比较:根据某个字段进行比较:order by 字段名[asc|desc] asc/升序,desc/降序
注意:校对集:必须咋没有数据之前声明好,如果有了数据,在进行校队集,那么修改无效
Web乱码
动态乱码网站由三个部分构成:浏览器,apache服务器(PHP),数据库服务器,三个部分都有自己的字符集(中文),数据需要在三个部分之间来回传递:很容易产生乱码
解决问题:统一编码(三码合一)
- 但是事实上不可能:浏览器是用户管理(根本不可能控制)
- 但是必须要解决这些问题:主要是靠PHP来做
发表评论
最新留言
不错!
[***.144.177.141]2025年04月09日 08时55分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
软件架构-zookeeper快速入门
2019-03-04
软件架构-zookeeper场景和实现
2019-03-04
「初级篇」跟我一起学docker(四)--容器的基本操作
2019-03-04
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04
scala上界与下界、协变与逆变
2019-03-04
java稀疏数组
2019-03-04
全球数字货币加快研发
2019-03-04
数字化助力金融科技,实现产业良性循环
2019-03-04
2020-11-23(彻底理解KMP)
2019-03-04
常用的IDC函数
2019-03-04
BUUCTF 新年快乐 内涵的软件 Java逆向解密 刮开有奖
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
angr学习笔记(9)(添加约束)
2019-03-04
angr学习笔记(13)(static_binary)
2019-03-04
windows环境利用start命令实现微信多开
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04
Ubuntu修改终端上显示的用户名和主机名(详细步骤)
2019-03-04