mysql存储不了中文字符
导读:MySQL是一款常用的关系型数据库管理系统,但是在一些情况下,它不能存储中文字符,这可能会给一些开发人员带来很大的困扰。造成这个问题的原因是因为MySQL默认使用的字符编码是Latin-1,而不是UTF-8。当我们试图向数据库中插入中文字符...
MySQL是一款常用的关系型数据库管理系统,但是在一些情况下,它不能存储中文字符,这可能会给一些开发人员带来很大的困扰。
造成这个问题的原因是因为MySQL默认使用的字符编码是Latin-1,而不是UTF-8。当我们试图向数据库中插入中文字符时,MySQL会将其视为非法字符而丢弃掉。
//以下是实验代码CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO testtable (name) VALUES ('张三');
SELECT * FROM testtable;
//运行后查询不到'张三'这条记录,因为会被过滤掉要解决这个问题,我们需要使用UTF-8字符集来存储中文字符。我们可以使用以下命令修改MySQL的默认字符编码:
//以下是命令行修改方式sudo vim /etc/mysql/conf.d/mysql.cnf//在文件末尾添加以下配置信息[client]default-character-set = utf8[mysqld]init_connect='SET collation_connection = utf8_general_ci'init_connect='SET NAMES utf8'character-set-server = utf8collation-server = utf8_general_ci
修改完成后,重启MySQL数据库服务。如果已经有现成的数据库,我们还需要按以下步骤修改其默认字符集:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
//遍历所有的表,修改字段SHOW TABLES;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
通过以上操作,我们可以完美解决MySQL存储中文字符的问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: mysql存储不了中文字符
本文地址: https://pptw.com/jishu/453030.html
