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)客户端普遍采用的字符集格式。

mysql支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以制定不同的字符集。

可以只用命令show character set;  插卡看支持的字符集。相对字符集还有校对规则的问题,可以查阅相关资料。

mysql字符集的设置:

有四个级别:服务器级,数据库级,表级和字段级。

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命令查看。

时间: 2024-08-03 11:29:00

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

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

http://jingyan.baidu.com/article/647f0115937be97f2148a894.html 一个一劳永逸的方法, 修改mysql的配置文件my.ini 在这个配置文件中有这样两项: 一个是客户段的默认字符集, 一个是服务器的默认字符集, 都修改为utf8, 如果没有就复制粘贴一下

在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。

            在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码. 这个问题困惑了我很久,也走了很多弯路.经过不断的探究终于找到了问题的解决方案. 第一:查看自己的mysql的编码.cmd->mysql –uroot –p -->输入自己的mysql的密码->输入 SHOWVARIABLES LIKE 'character%';(如果装mysql时默认安装的话,会出现很多latin1,而不是我下面的全部utf-8,这是因为mysql默认的编码是lati

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

对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的时候,选择UTF-8字符集.我试过修改现有数据库字符集为UFT -8,但是根本不起作用,插入的中文仍然乱码(中文显示成:???).重建库时选择字符集为UTF-8之后,中文正常显示了. 对于第二个问题,是这样 的情况:我建库时设置了数据库默认字符集为UTF-8,通过mysql workbench直接插

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

今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一种彻底解决乱码的方法: 我是在ubuntu云服务器环境下进行的设置,Windows操作系统下操作更加简单,这里就不赘述,方法类似,大家自己可以查阅资料. 首先在命令行下输入: #cd /etc/mysql 进入目录后,然后修改my.cnf配置文件(mysql版本在5.5以上,现在基本都是这个以上)

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

背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 ? A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. ? B.查看 MySQL的字符集是否是 UTF-8.打开 Dos 窗口,输入:mysql -u root -p, 在输入密码即可进入数据库.进入数据库输入命令 :show variables like 'character%';查看数据库的字符集,如下图: ? MySQL 的默认编码是 Latin1,不支

ubuntu MySQL数据库输入中文乱码 解决方案

一.登录MySQL查看用SHOW VARIABLES LIKE 'character%';下字符集,显示如下:+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connectio

CMD中操作mysql数据库出现中文乱码

只要保证cmd客户端和MySQL两者编码一致即可. 但现实是cmd默认的是gbk(cmd属性可以看到中文操作系统下面是gbk编码),而mySQL一般是utf8,之前一直进入误区,想要更改cmd的字符编码,可是并不能行得通.在mysql中关于客户端编码问题,只需在cmd里告诉mysql服务器我客户端这边编码和想要的结果集编码即可. 具体步骤:1.win+r进入cmd,然后切到mysql安装目录的bin文件夹下(或者直接打开我的电脑找到bin文件夹,在上方地址栏输入cmd): 2.输入 mysql

.Net 插入数据MySql数据库,中文乱码解决问题

1, 修改mysql根目录下配置文件my.ini,在[client]节点下添加default-character-set=utf8 ,在[mysqld]节点下添加character_set_server=utf8,然后重启mysql服务 2,修改根目录/data/performance_schema/db.opt文件 default-character-set=utf8 default-collation=utf8_general_ci 3,设置数据库基字符集为utf8 ,设置表字符集为utf8

关于windows下安装mysql数据库出现中文乱码的问题

首先需要在自己安装的mysql路径下新建一个my.ini文件,如下: 然后在my.ini文件中输入一下内容,主要控制编码问题的为红框部分,如下: 为了方便大家使用,可以复制以下代码: [WinMySQLAdmin] Server=E:/mysql/mysql-5.6.41-winx64/bin/mysqld-opt.exe user=root [mysql] default-character-set=utf8 [mysqld] lower_case_table_names=2 basedir=