如何解决mysql表输入中文出现问号的问题
作者:lidashent
这篇文章主要介绍了如何解决mysql表输入中文出现问号的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
分析
Incorrect string value: ‘\xE7\xA8\x8B\xE5\xBA\x8F…’ for column ‘course’ at row 1
数据库的编码格式为latin1
原因:
不支持中文,比如设置的latin字符,或者编码解码不一致问题,比如客户端用uf8,服务器用latin等
解决:
统一设置为utf-8格式即可
- 1.需要改配置文件,以后创建数据库自动utf-8
- 2.对使用的数据库,表,表中的列重新设置编码格式为utf-8
修改配置文件
在mysql目录下找到myini文件
如果文件再c盘,复制出来到桌面修改,否则c盘保护不让修改,修改后再替换即可
修改的有两处,客户端编码,服务器编码
(注:collation是排序方式)
然后重启服务器即可,在管理员的cmd中输入如下指令
查看修改后的mysql编码格式
我已经修改过了,这是修改后的
修改数据库编码,表编码,表中的列编码
1.先查询数据库编码格式
如果不是utf8,可以使用如下命令修改
ALTER DATABASE 数据库 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
或者
2.表编码格式修改
查询表的编码格式
show create table tablename(数据库名.表名);
可以看出表编码格式为utf8,列编码为latin1,列不支持中文
如果表编码不是utf8,可以如下修改
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE …]
(注:此句把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:)
比如
ALTER TABLE web_user.user CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
再查询如下:
latin消失了,支持中文,而且全部编码一致
若修改某字段的字符集
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE …];
如:
ALTER TABLE web_user.user CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
如果还是不成功,删了重建数据表可以考虑
附:
若只修改表格默认的字符集
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE…];
如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。