MySQL之中文数据问题
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
最近在复习MySQL,为什么是复习呢?大家应该都懂,技能好久不用都还给老师了,因为以前学习没有记录的习惯,学的时候会不用就忘,
而且用的时候不能快速理解,还要再次观看视频或者翻看厚厚的书籍,所以本次复习随笔记录,方便以后查看。
#------------------------------------------------我是可耻的分割线-------------------------------------------
中文数据问题
中文数据问题本质是字符集问题
计算机只识别二进制:人类更多识别符号:需要有个二进制与符号的对应关系(字符集)
原因:\xD5\xD5\xD4\xBD代表的是“张悦”在当前编码(字符集)下对应的二进制编码转换的十六进制:两个汉字=>四个字节
报错:服务器没有识别对应的四个字节:服务器任务数据是UTF8,-个汉字有三个字节:读取三个字节转换成汉字(失败),剩余的再读三个字节(不够):最终失败。
所有的数据库服务器认为(表现)的一些特性都是通过服务端的变量来保存:系统先读取自己的变量,看看应该怎么表现。
//查看服务器到底识别那些字符集
Show character set;
基本上:服务器是万能的,什么字符集都支持
//既然服务器识别这么多:总有一种是服务器默认的跟
Show variables like 'character_set%';
问题根源:客户端数据只能是GBK,而服务器任务是UTF8:所以矛盾产生
解决方案:改变服务器,默认的接收字符集为GBK;
插入中文的效果:
查看数据效果:依然是乱码
原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK:只会两个字节一个汉字);
但是事实服务器给的数据却是UTF8,三个字节一个汉字:乱码
解决方案:修改服务器给客户端的数据字符集为GBK
Set character_set_results = gbk;
查看数据效果
Set 变量 = 值;修改只是会话级别,当前连接成效,关闭失效
设置服务器对客户端的字符集的认识:可以使用快捷方式,set names 字符集;
Set names gbk; ===>character_set_client,character_set_results,character_set_connection
最新文章
- 借助node实战JSONP跨域
- jquery练习(赋予属性值)
- Load Mental Ray in Maya 2015
- snoopy 强大的PHP采集类使用实例代码
- [hadoop] WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
- Careercup - Google面试题 - 5162732873580544
- ANDROID_MARS学习笔记_S05_006_距离传感器
- Square
- linq 多个left join 和 sql union all ->; linq union 方法
- (原)lua使用ffi调用c程序的函数
- Oracle EBS-SQL (CST-4):检查组织间项目成本.sql
- 自动化测试:behave
- git编译安装
- js数组去除重复
- 【hibernate】1、Hibernate的一个注解 @Transient
- 【九天教您南方cass 9.1】 05 打印出图
- GIT 分布式版本控制系统的简单使用介绍
- Oracle——数据库启动与关闭
- 串口WIF简单I调试
- hdoj3038(带权并查集)