安装mysql之后。假设存储中文。再读出的时候就会出现乱码问题。

如今的字符集有几百种之多,都是一些公司或者组织定义的。

我们应该使用可以容纳世界所有语言所有字符的字符集,这样就不会再出现乱码问题。

这就是如今通用的UTF-8。

要理解编码就应该区分字符集和编码格式是说的同一问题的两个方面。

导致乱码的原因是存储和读取时採用的是不同的字符集。

推荐在建库之前改动编码格式:

一、进入mysql(mysql -uroot -p),查看当前数据库字符集(status;)

二、#vim /etc/mysql/my.cnf

三、

[client]

default-character-set=utf8

[mysqld]

default-storage-engine=INNODB

character-set-server=utf8

collation-server=utf8_general_ci

四、重新启动mysql(/etc/init.d/mysql stop   /etc/init.d/mysql  start)

上面是建库之前的操作。假设是数据库正在使用。然后发现编码格式不正确应该怎么办呢?

一、导出表结构:mysqldump -uroot -p --default-character-set=gbk -d databasesname > createtable.sql

二、手工改动createtable.sql中的表结构定义的字符集为新的字符集。

三、确保记录不再更新。导出全部记录。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename>data.sql

--quick:转存大表时使用,一次次检索表中的行,而不是一次检索全部行,输出时存储在缓存。

--no-create-info:不导出建表语句。

--extended-insert:使用包括几个VALUES列表的多行INSERT语法。

--default-character-set=latin1:依照原有字符集导出,这样在导出文件里全部中文都是可见的。

四、打开data.sql,将SET NAMES latin1改为SET NAMES gbk

五、使用新的字符集创建新的数据库。

create database databasename defaule charset gbk;

六、创建表,运行createtable.sql

mysql -uroot -p databasename < createtable.sql

七、导入数据

mysql -uroot -p databasename < data.sql

以下是我国自己定义的一些编码标准:

1)GB2312-80:1980年公布,双字节编码字符集。

2)GB13000:1993年公布,使用非常少。仅仅是一个形式上的标准。

3)GBK:1995年公布,由于得到了windows 95的支持大行其道。

4)GB18030:2000年公布,没怎么听过。

以下是经常使用字符集的比較:

1)ASCII,定长。单字节7位编码。最早的奠基性编码。

2)GBK,定长,双字节编码。自持广泛。

3)UTF-8。不定长,1-4字节编码。互联网和UNIX广泛支持的Unicode字符集。

4)UTF-16,不定长,Java等内部使用的字符集。

字符集怎样选择呢:

1)在多国使用,国际化的范儿,使用Unicode,也就是UTF-8。

2)假设数据库中已有数据的导入,就要考虑数据库字符集对已有数据的兼容性。

3)数据库仅仅支持中文,数据量非常大,性能要求高,能够使用双字节编码的GBK。由于相比于UTF-8的3字节,空间占用更少。

4)假设数据库要做大量的字符运算。如比較排序等,定长的比不定长的更快。

5)client普遍採用的字符集格式。

mysql支持多种字符集。在同一台server。同一个数据库。甚至同一个表的不同字段都能够制定不同的字符集。

能够仅仅用命令show character set;  插卡看支持的字符集。

相对字符集还有校对规则的问题。能够查阅相关文档。

mysql字符集的设置:

有四个级别:server级,数据库级,表级和字段级。

1)数据库字符集的设置:在my.cnf(windows为my.ini)中设置:[mysqld]character-set-server=utf-8     在启动选项中设置:mysqld --character-set-server=utf-8  也能够在编译时制定。

2)数据库字符集和校对规则,可在创建数据库时制定,也可在创建之后通过alter database命令改动。

3)标的设置同上,要显示表的字符集和设置规则能够通过show create table命令查看。

mysql数据库解决中文乱码问题的更多相关文章

  1. mysql数据库解决中文乱码的问题

    http://jingyan.baidu.com/article/647f0115937be97f2148a894.html 一个一劳永逸的方法, 修改mysql的配置文件my.ini 在这个配置文件 ...

  2. 项目--解决MySQL数据库插入中文乱码

    转载自:http://blog.csdn.net/zzh920625/article/details/51226312 情景再现] 如图,在项目中使用MySQL数据库,在做插入操作时,写入英文字符没有 ...

  3. mybatis连接mysql数据库插入中文乱码

    对于MySQL数据库的乱码问题,有两种情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  4. Windows使用MySQL数据库管理系统中文乱码问题

    声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelper远程登陆 ...

  5. mysql数据库的中文乱码问题的解决

    今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一 ...

  6. MySQL数据库插入中文乱码解决方法

    在mysql数据库中,插入中文数据时,会出现乱码的现象. 我的测试方法: 首先用Navicat for MySql 插入一行数据,带有中文的. 再用mysql命令行来查看插入的数据,看是否出现乱码. ...

  7. web 项目:解决插入 MySQL 数据库时中文乱码问题

    背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 ​ A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. ​ B ...

  8. 在DOS中操作MySQL数据库出现中文乱码

    1. 问题:最近使用到MySQL数据库操作,在DOS下使用命令行向mysql中插入/读取中文时出现乱码问题. 2. 原因:由于CMD客户端默认编码为GBK,而本人在安装MySQL时设置编码为UTF-8 ...

  9. Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题

    mysql 中常常出现对中文支持不友好的情况 常见的错误 "Illegal mix of collations for operation" 下面我们规整一下 mysql 数据库中 ...

随机推荐

  1. UVALive 5033 I'm Telling the Truth 二分图最大匹配(略有修改)

    I - I'm Telling the Truth Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  2. 【bzoj4399】魔法少女LJJ 并查集+权值线段树合并

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  3. bzoj2338数矩形(rectangle)

    数矩形(rectangle) 计算几何 把所有点两两连线,把这些线按长度排序,再按中点排序 能组成矩形的线一定是连续的 最坏就是所有点围成一个圆,交于圆心 复杂度O(可以过) 要用叉积,不然会被卡精 ...

  4. Docker学习之Docker Registry

    前言 前面已经学习了怎样通过Dockerfile来构建我们自己的镜像了,但是一个系统可能包含着很多个微服务即有很多个镜像,当镜像越来越多的时候,就必须得有一个地方来管理这些镜像,Docker官方提供了 ...

  5. 品酒大会(uoj 131)

    一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 ...

  6. 洛谷 [P2051] 中国象棋

    DP orz__stdcall 首先要想出来,每行最多只能放两个棋子,这是显然的 于是决策就是一行一行地处理 30分的做法就是裸的枚举,暴搜,枚举这一行放哪里,放几个 然后想到了压位dp,按3进制表示 ...

  7. Python之Django框架

    1.Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种.许多成功的网站和APP都基于Django. Django是一个开源的Web应用框架,由Python写成. ...

  8. [bzoj 3048] [Usaco2013 Jan]Cow Lineup

    [bzoj 3048] [Usaco2013 Jan]Cow Lineup Description 给你一个长度为n(1<=n<=100,000)的自然数数列,其中每一个数都小于等于10亿 ...

  9. 【POJ3667】Hotel(线段树)

    题意:有n个依次编号的元素,要求维护以下两个操作: 1.询问整个数列中是否有长度>=x的连续的一段未被标记的元素,若无输出0,若有输出最小的开始编号ans并将[ans,ans+x-1]标记 2. ...

  10. js2:事件的学习,弹出窗口,状态栏字改变,地图热点的使用

    原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...