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
MySQL之中文数据问题的更多相关文章
- MySQL插入中文数据出现?号
原文转载自:https://blog.csdn.net/LynneZoe/article/details/79174119 运行环境:win10 mysql版本:Mysql5.6 做一个项目的时候,向 ...
- mysql插入中文数据变成问号怎么处理
插入中文数据变成问号,一般都是因为字符集没有设置成utf8的原因 1.修改字符集: ALTER TABLE 表名 MODIFY 列名 类型(50) CHARACTER SET "utf8&q ...
- MYSQL导入中文数据乱码的四种解决办法
方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 my ...
- MySQL 插入 中文数据乱码解决
问题描述: 1.在命令行中进行插入,没有问题.但是显示存在部分乱码 2.在JDBC中插入成功.中文是直接以“??”形式显示. 通过Navicat客户端查看 与在网页中看到的一一致,说明读取没有问题,问 ...
- Hibernate向MySQL插入中文数据--乱码解决
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/exam?useUnicod ...
- mysql添加中文数据失败
日志信息: INFO 2015-01-13 10:44:36,078 org.springframework.beans.factory.xml.XmlBeanDefinitionReader: Lo ...
- mysql 查询中文数据
select * from comm_user WHERE length(tags)!=CHAR_LENGTH(tags)
- mysql不能插入中文数据
上次遇到的是向mysql插入中文数据,中文数据乱码了.这次直接就不能插入中文数据了!!!! 参考博文:http://blog.csdn.net/generalyy0/article/details/7 ...
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- 解决mysql无法插入中文数据及插入后显示乱码的问题
(1)废话不多说就是使用mysql数据库的时候无法输入中文,可以输入中文后显示的又是乱码!! (2开始解决问题: 第一步:找到安装mysql的目录找到 my.ini 文件: 第二步:使用记事本打开my ...
随机推荐
- HashMap排序题
HashMap排序题 题目 已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性. 请写一个方法实现对HashMap ...
- Java中@Override
Java中的@Override @Override是伪代码,是"覆盖","重写"的意思 (当子类继承父类时,不写@Override其实也是可以的.) 写了以后好 ...
- kvm 透传显卡至win10虚拟机
环境 已安装nvidia 显卡 驱动 操作系统:CentOS Linux release 7.9.2009 (Core) 内核版本:Linux 5.4.135-1.el7.elrepo.x86_64 ...
- Linux环境使用Docker安装SqlServer2017
系统环境: CentOS 7.6 64位(同样适用于Ubuntu) 安装步骤: 1.创建文件夹 /home/docker/sqlserver/mssql 2.下载镜像并用外部匿名卷挂载数据 $ doc ...
- Java面向对象之Object类
Object类 Object类是所有Java类的根父类 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 Object类中的功能(属性.方法)就具有 ...
- Java面向对象之instanceof和类型转换
instanceof instanceof(类型转换):利用此关键字可以判断某一个对象是否是指定类的实例 格式: 对象 instanceof 类 返回boolean型 - 如果某个对象是某个类的实例, ...
- ibatis批量数据入库sql
ibaits 批量数据入库sql <insert id="waiter.insertBatch" parameterClass="java.util.List&qu ...
- 一些JVM指令
1.jps:查看本机java进程信息. 2 .jstack:打印线程的栈信息,制作线程dump文件. 3.jmap:打印内存映射,制作堆dump文件 4.jstat:性能监控工具 5.jhat:内存分 ...
- 【windows】bat脚本、批处理文件
::当前盘符 @echo current pan : %~d0 ::当前路径 @echo current path : %cd%\ ::当前bat文件路径 @echo the bat's path : ...
- java LinkedList 原理
概述 底层数据结构是双向链表(jdk1.6是双向循环,1.7开始不循环了),所以 新增/删除效率高,查询/修改效率相对较低 全能冠军:既是一个顺序容器,也是队列,还可以作为栈使用 未实现 Random ...