解决MySQL存储中文乱码问题(mysql存中文乱码)

英文中文存在大小写转换的差异,因此存在着mysql存储中文乱码问题,使得中文字符串在mysql中会乱码。接下来,就介绍几种常用方法来解决mysql存储中文乱码问题。

一、改变表编码

采用此方法需要在创建表的时候,把默认的表编码改为utf-8编码,同时让MySQL支持utf-8字符集,一般来说,都super user(root用户)权限能够操作mysql字符集,代码示例:

CREATE TABLE tbl_name(  
col_name CHAR(250) CHARACTER SET utf8

)
DEFAULT CHARSET=utf8;

另外,也可以使用ALTER命令改变表编码。具体的代码实例如下:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8; 

二、初始化utf8字符集

MySQL中,中文乱码的根源是字符集不同,导致字符对应的码值不同,乱码显示。因此,可以采取的方法就是先进行数据库初始化,保证MySQL内部全部采用UTF8字符集,再进行表、字段的编码转换,如下所示:

#编辑my.cnf文件,加入以下文本 
[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8

#mysql -u root -p
#将下面每一行单独执行
set names gbk;
set names utf8;

#执行完毕以后,再分别依次执行以下sql语句以完成mysql编码设置
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

三、修改字符集

有时候只是想改变某列的字符集,此时可以使用ALTER语句,假定表名叫tb_name,要更改的字段名叫col_name,如下代码:

ALTER TABLE tb_name CHANGE col_name col_name VARCHAR(250) CHARACTER SET utf8; 

四、添加字段编码注释

有时候,为了保证添加列的字符集是原有列的字符集,可以在ALTER中添加@C编码注释,用来声明字段的字符集,如下:

ALTER TABLE tb_name ADD col_name VARCHAR (250) CHARACTER SET utf8 
COLLATE utf8_general_ci@c;

以上就介绍了MySQL存入中文乱码问题的几种常用解决方法,采用以上的方式可以让MySQL的中文乱码问题得到很好的解决。


数据运维技术 » 解决MySQL存储中文乱码问题(mysql存中文乱码)