Mysql 5.5 中文字符编码问题。1366, "Incorrect string value: '\\xE7\\xB3\\xBB\ \xE5\\x88\\x97' for column 'name' at row 1"
-
show VARIABLES like 'character_%';
-
将所有字段值非utf8 (上图中为latin1 拉丁)修改为utf8
set character_set_database=utf8;
set character_set_connection=utf8;
-
测试
use test;
create table Test(
Name nvarchar(10)
);
insert into Test values('中文');
select * from Test;
如上操作后可以直接数据库插入中文,但是 navicat 以及Django这样的不能进行插入中文,查询出来是乱码,就可以进行以下操作
- MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置。注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。所以建议要用
show create table table ;
或
show full fields from tableName;
来检查当前表中字段的字符集设置。
-
查看数据库编码:
SHOW CREATE DATABASE db_name; -
查看表编码:
SHOW CREATE TABLE tbl_name; -
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
如图查看字段输入:show full fields from api_products\G;
我的字段依旧是拉丁,所以需要修改
-
修改数据库字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; -
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE api_products CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; -
只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE api_products DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -
修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE api_products CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
把我表默认的字符集所有字符列,修改为新字符集:
成功了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?