解决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的中文乱码问题得到很好的解决。