mysql数据库解决中文乱码问题
安装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数据库解决中文乱码问题的更多相关文章
- mysql数据库解决中文乱码的问题
http://jingyan.baidu.com/article/647f0115937be97f2148a894.html 一个一劳永逸的方法, 修改mysql的配置文件my.ini 在这个配置文件 ...
- 项目--解决MySQL数据库插入中文乱码
转载自:http://blog.csdn.net/zzh920625/article/details/51226312 情景再现] 如图,在项目中使用MySQL数据库,在做插入操作时,写入英文字符没有 ...
- mybatis连接mysql数据库插入中文乱码
对于MySQL数据库的乱码问题,有两种情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...
- Windows使用MySQL数据库管理系统中文乱码问题
声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelper远程登陆 ...
- mysql数据库的中文乱码问题的解决
今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一 ...
- MySQL数据库插入中文乱码解决方法
在mysql数据库中,插入中文数据时,会出现乱码的现象. 我的测试方法: 首先用Navicat for MySql 插入一行数据,带有中文的. 再用mysql命令行来查看插入的数据,看是否出现乱码. ...
- web 项目:解决插入 MySQL 数据库时中文乱码问题
背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. B ...
- 在DOS中操作MySQL数据库出现中文乱码
1. 问题:最近使用到MySQL数据库操作,在DOS下使用命令行向mysql中插入/读取中文时出现乱码问题. 2. 原因:由于CMD客户端默认编码为GBK,而本人在安装MySQL时设置编码为UTF-8 ...
- Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题
mysql 中常常出现对中文支持不友好的情况 常见的错误 "Illegal mix of collations for operation" 下面我们规整一下 mysql 数据库中 ...
随机推荐
- nyoj 题目19 擅长排列的小明
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...
- 第六篇:python基础_6 内置函数与常用模块(一)
本篇内容 内置函数 匿名函数 re模块 time模块 random模块 os模块 sys模块 json与pickle模块 shelve模块 一. 内置函数 1.定义 内置函数又被称为工厂函数. 2.常 ...
- Log4j官方文档翻译(一、基本介绍)
简介 log4j是使用java语言编写的可靠的.快速的.灵活的日志框架,它是基于Apache的license. log4j支持c,c++,c#,perl,python,ruby等语言.在运行时通过额外 ...
- 【bzoj1221】[HNOI2001] 软件开发 费用流
题目描述 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消 ...
- 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...
- (Mac)centos 6.5安装 JDK+mysql
为了把自己的网站放到外网,购买了阿里云的centos 6.5服务器,以下是安装 JDK 一.JDK安装: 方法一: 1.创建目录,命令行:(这里可以不加sudo) sudo mkdir /jdk 2. ...
- Eclipse的Web项目完成后怎么发布到Tomcat
打开eclipse,在“Server Locations”处,可以看到默认的是“Use Workspace metadata”. 而我们选择“Use Tomcat installation”,使用to ...
- 5-Dalvik垃圾收集机制Cocurrent GC
Dalivik垃圾回收收机制Cocurrent GC简介和学习计划 导语: 在C/C++中,开发者需要手动地管理在堆中分配的内存,但是这往往导致很多问题. 1. 内存分配之后忘记释放,造成内存泄漏. ...
- JS 监听绑定和取消事件
1. 原生 JS 语言: 绑定:addEventListener(type, function, false) 取消: removeEventListener(type, function, fals ...
- [LeetCode] Repeated DNA Sequences hash map
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...