一般在安装和设置MySQL的时候会选择将其编码格式设置为UTF8,以保证数据库在不用语言环境下的适应性。但是一般在Win下使用的时候,本机编码集却是GBK或者GB2312.这样在Win下的GBK编码输入的数据,向数据库中存储时会被按UTF8 字符集去解释,自然就造成了存入数据乱码。

解决存入数据乱码的方法是在MySQL下查看其编码集:

查询命令:show variables like “charac%”

结果显示:

分别设置Server,System和DataBase为UTF8的编码集,而Client和Results为GBK或者GB2312中文编码集,这样插入的含有中文数据的记录以及查询显示的结果就不会出现乱码了。有时候数据并非乱码,但是中文数据被查询出来的结果显示却是乱码,这是结果集设置的问题,因此需要将结果集设置为中文编码集,这样以UTF8查询出来的数据在显示的时候会按照GBK或者GB2312编码集来解释,这样就解决了显示乱码的问题。

设置Client编码表命令:set character_set_client=GB2312;

设置Results编码表命令:set character_set_results=GB2312;

综合以上两点:数据库的Server是按UTF8字符集进行编码存储,以避免在java代码中查询使用时出现乱码或者出现不必要的格式转换;而Client和Results还是根据Win下的编码集设置为GBK或者GB2312以避免在存储和显示的时候出现乱码。

测试过程如下:

对于Client和Results都是UTF8 的情形,插入含中文数据的记录结果:存入数据库的内容就是乱码

对Client进行修改,设置Client为GBK之后,存入数据不是乱码,但是显示是乱码

对Result进行设置之后,第二条记录中的乱码解决,但是由于第一条记录中本身存入的时候就是乱码,所以还需要对该乱码在代码中进行转换才可以还原出最初存入的中文数据。

在使用MYSQL的时候通常还是会显式的指定数据库及表的编码格式为UTF8,以防止在配置MYSQL的时候由于没有正确配置编码集而造成的。

例如创建时显式指定:

CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET UTF8;

表的创建也是可以显示指定。

如果创建数据库的时候未正确的指定编码集,那么可以使用如下的命令进行修改:

ALTER DATABASE dbname CHARACTER SET UTF8;

【数据库】MySQL乱码解决(存入数据乱码和查询输出乱码)相关推荐

  1. 解决 IntelliJ IDEA Tomcat 控制台中文输出乱码问题

    解决 IntelliJ IDEA Tomcat 控制台中文输出乱码问题 参考文章: (1)解决 IntelliJ IDEA Tomcat 控制台中文输出乱码问题 (2)https://www.cnbl ...

  2. ci框架 乱码 mysql_mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法

    mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法 作者:吕海鹏 文章来源:itstudy原创 发表时间:2008-10-18 11:15:08 阅读次数:今日:5 本 ...

  3. php 入库乱码,解决php 中文字符入库或显示乱码的简单示例

    这篇文章主要为大家详细介绍了解决php 中文字符入库或显示乱码的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!大家以后在编写过程中, 一定 ...

  4. php 邮件乱码,解决PHP mail发送UTF-8中文邮件乱码

    在这里,我将解决一个问题,也许很多人遇到过,困惑又不知道如何去做的问题. 如何发送中文邮件时没有乱码? 在这里我将告诉你如何发送UTF-8编码格式的中文电子邮件.本文不涉及GBK编码或者GB2312编 ...

  5. 如何查mysql里有多少条数据_mysql快速查询数据库中有多少条数据

    慕尼黑的夜晚无繁华 mysql 统计 表的数量:SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库'; ...

  6. MySQL数据库——MySQL INSERT:插入数据(添加数据)

    数据库与表创建成功以后,需要向数据库的表中插入数据.在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据. 基本语法 INSERT 语句有两种语法形式,分别是 IN ...

  7. 数据库Mysql基础------第一部分 数据的准备与基础命令

    一.初识数据库 一.为什么要用数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 数据库随时随地的存在,并且使用,简单的说,数据库就是收集数据的结构.数据涉及很多,例如一个 ...

  8. MySQL 和 Oracle 大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  9. mysql xf0x9fx8ex88_【Mysql】解决插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误...

    背景: 用户输入的表单里边.存在 手机自带的表情,  在执行插入时候报错 Incorrect string value: '\xF0\x9F\x92\x8BTi...' 错误原因:我们在设置mysql ...

最新文章

  1. 面试:SpringBoot中的条件注解底层是如何实现的?
  2. c++中使用Tesseract-OCR
  3. openssh for windows
  4. myeclipse使用太卡问题
  5. linux lsm 程序加载钩函数,LSM在Linux中的实现方式
  6. ubuntu man手册完善
  7. python慢为什么用的人还很多_为什么是所有人比python标准慢得多吗?
  8. C/C++混淆点-字符串指针
  9. setw()(转载)
  10. Python之路【第三篇】:Python基础(二)
  11. 用泛型的sort与binarySearch方法
  12. 开源中文bi_odoo:免费开源ERP入门与实践
  13. phpcount数组报错_PHPExcel把导入的excel表格转换为数组,然后运行,浏览器什么也不显示,也不报错...
  14. 华为确定发布鸿蒙的时间了吗,Mate40系列首发,华为鸿蒙OS手机版发布时间确定...
  15. UI设计中签到页面如何设计
  16. 【转载】SpringBoot 接口数据加解密技巧,so easy!
  17. 虚拟机开机问题:开机时卡在启动窗口
  18. HTML5三屏合一的架构设计
  19. 【牛客 错题集】Linux系统方面错题合集
  20. 西游记原来是这么读的

热门文章

  1. C++编程进阶5(内联函数、如何降低编译成本、处理继承体系中同名不同参的成员函数、私有虚函数)
  2. C++知识点21——使用C++标准库(再谈string——string的搜索和数值转化)
  3. Eclipse安装SVN最新版插件
  4. 44.作用域,局部和全局变量
  5. Android开发之CoordinatorLayout使用详解一
  6. Java RESTful Web Service实战
  7. C# DES 加密 解密
  8. 【剑指Offer】面试招聘题目2:重建二叉树
  9. 多比矢量图开发手册(六)-Web高级图元编程
  10. Altium Designer 发现的机密