想要解决MySQL中文乱码首先必须了解下MySQL所支持的字符集,至于中文乱码出现的原因可以总结为:向数据库中插入的数据与数据库中的表所使用的字符集编码不同

一 . MySQL 中文字符集

常见支持中文的字符集有

GBK(双字节定长字符集)

得到了大多数系统的支持

GB2312(双字节定长字符集)

国标,收录了6763个常用汉字,比GBK少

GB 18030(不定长)

同样是国标,但数据库支持得较少

UTF-8(不定长 1至4 字节)

较为常用,被广泛支持

UTF-16 (不定长 2 或 4 字节)

采用16位编码的形式

曾经天真的以为,将所有字符编码都设为UTF-8便可,呵呵

后来发现UTF-8编码的  一个汉字  就要占用 3 个字节 ,而 GBK 编码的  一个汉字 只占用两个字节

因此当数据库是用来保存大量中文同时少量出现英文字符(即ASCII)码时,最好将该数据库的编码设为GBK(最为常见的情景就是保存小说了,大量的中文同时夹杂些英文字符)。这样就可以减少磁盘I/O,节省网络带宽。

当然,如果你的网站需要跨越多个语言区域的话,那UTF-8就是不二之选了。

二. MySQL中中文乱码的解决

记录一下自己中文乱码解决的过程

1. 打开数据库查看自己当前默认数据字符集的设置(在创建表的时候如果不制定字符集的话                            MySQL将使用默认字符集来处理表或数据库)

输入

show variables like '%char%';

修改值定变量的字符集: 如将客户端的字符集修改为GBK

set character_set_client=gbk;

修改完之后,再创建新表如果没有特殊指定的话 ,就会使用你所指定的默认字符集

2.修改表的字符集

alter table table_name charset=utf8

3.修改配置文件

在Windows下Mysql的配置文件 my.ini中

将character_set_server设置为你所想要的值

如下将其值设置为UTF8

character_set_server=utf8

4.注意

Windows 下的控制台中默认是不支持UTF8编码,所以无论你怎么改,中文仍然是问号,或者乱                 码(当然可以通过操作使其支持UTF8编码)。

三.MySQL 校对规则

MySQL 在对字符或字符串进行 比较 或 排序 的时候是根据字符集所对应校验规则集来决定大小写是否        敏感,或是根据字符的值来进行排序或比较。

每个字符集至少对应一种校对规则

使用以下语句来查看字符集所对应的校对规则

show collation like 'gbk8%';

排序方式的命名规则为:字符集名字_语言_后缀,其中各个典型后缀的含义如下:

1)_ci:不区分大小写的排序方式

2)_cs:区分大小写的排序方式

3)_bin:二进制排序方式,大小比较将根据字符编码,不涉及人类语言,因此_bin的排序方式不包含人类语言

因此,gbk_chinese_ci排序方式就表示:字符集为gbk,人类语言使用中文来比较大小,比较时区分大小写。

mysql 存json中文乱码怎么设置_解决 MySQL 中文乱码相关推荐

  1. mysql执行语句出来全是问号_解决MySQL中文输出变成问号的问题

    解决MySQL中文输出变成问号的问题 于是我在程序中加入:mysql_query("SET NAMES GB2312");问题迎刃而解.主要是一个编码问题. 注意这句代码的插入位置 ...

  2. mysql连接被拒绝 密码也对_解决Mysql数据库拒绝远程连接和忘记密码的问题

    解决数据库忘记密码的问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 编辑m ...

  3. mysql不能通过ip地址访问权限_解决mysql中只能通过localhost访问不能通过ip访问的问题...

    解决mysql中只能通过localhost访问不能通过ip访问的问题 原因是没开权限 select * from user where user='root'; grant all privilege ...

  4. mysql可重复读和间隙锁_解决MySQL可重复读——详解间隙锁

    间隙锁(Gap Lock)是Innodb在可重复读提交下为了解决幻读问题时引入的锁机制,(下面的所有案例没有特意强调都使用可重复读隔离级别)幻读的问题存在是因为新增或者更新操作,这时如果进行范围查询的 ...

  5. mysql存json将utf8编码 去掉,MySQL对JSON类型UTF-8编码导致中文乱码探讨

    原文:https://www.cnblogs.com/CreateMyself/p/12587426.html 前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有 ...

  6. xp mysql字符集与乱码_解决MYSQL中文乱码问题三种方法

    方法三 1>本文将消除乱码分为三步: >消除页面乱码, >消除从mysql教程中读出中文乱码, >消除插入mysql数据库教程中的中文乱码: 15>注意编码表示方式在网页 ...

  7. mysql不同版本乱码_解决MySQL中文乱码以及版本不一致问题_MySQL

    一.导出数据 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内的 ...

  8. mysql java中文乱码_解决Mysql+Java的中文乱码问题(学习心得)

    最近几天一直都在学JSP,我用的数据库是Mysql.在连接数据库的过程中,刚开始我只是简单的执行了查询命令,发现从数据库取出的中文数据全部显示成了乱码,查了一些资料之后,我先用了下面的一个转换函数,值 ...

  9. mysql system_time_zone乱码_解决mysql设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'...

    Mysql默认时区格式是'+8:00'的格式,这个时区可以在my.ini中[mysqld]节点下设置 default-time-zone = '+8:00' 默认这个设置是没有的 但是mysql不支持 ...

最新文章

  1. matlab 数据集制作,机器学习数据集制作与划分MATLAB实现
  2. 微服务前端开发框架React-Admin
  3. 帝国cms模板辅助编辑插件lsk_ecms.crx使用说明
  4. Javascript的this用法
  5. matlab 暂停命令(pause和input)
  6. LIST-PROCESSING命令的使用
  7. 再次“重新定义” 华为争做数据基础设施领航者
  8. JSP知识点大致介绍1
  9. js实现点击按钮复制文本功能
  10. 大学生学图像处理计算机要求,重点大学计算机教材:数字图像处理
  11. 使用友元,编译出错fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786) 的解决...
  12. 【听课笔记】复旦大学遗传学_06基因组
  13. oracle 8002,ORACLE 8.1.7 数据库ORA-600 4194故障恢复
  14. 面试题汇总-大牛的Java170
  15. 牛客网利用C语言解兔子序列
  16. 助力低碳出行 | 基于ACM32 MCU的电动滑板车方案
  17. 桌面虚拟化-精彩刚刚开始
  18. A review of 3D vessel lumen segmentation techniques: Models, features and extraction schemes
  19. Linux下:matplotlib 添加 Times New Roman字体
  20. 非常详细的hi3559A概念版用户手册

热门文章

  1. python求平均工资_math - 在Python中计算算术平均值(一种平均值)
  2. HTML两栏布局和三栏布局
  3. 空文件夹删不掉打不开,“该项目不存在请确认该项目位置“,“项目正在打开中无法删除“,“文件已损坏或者已经被移动删除“(多种方法图文详解,细节需要注意,以及可能遇到的问题)
  4. 切android 图标插件,Android解决Cutterman切割图标命名问题
  5. TCC-Transaction原理
  6. Linux下MySQL端口号查看与修改(端口扫盲)
  7. java实现Redis消息发布订阅
  8. SLS-日志服务分析查询
  9. WPF教程(十)使用App.xaml
  10. 在php页面出现乱码的原因,造成网页乱码的根本性原因是什么