Sqlalchemy中文编码问题
mysql的连接字符"mysql+mysqldb://user:password@ip:3306/dataset?charset=utf8"
create_engine中已经设定了encoding=“utf-8”,但还是出现编码问题:"UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 0-3: ",其问题的根源在于mysql创建数据库默认为latin-1。
解决方案如下:
- 直接修改mysql数据库的编码
- 用
show variables like 'character%';
查看当前mysql的编码格式 - 进入工作数据库,并修改当前数据库的编码格式
ALTER DATABASE test_data CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
- 查看编码是否已经被修改,运行
show variables like 'character%';
即可。 - 设定"mysql://username:password@host:3306/test_data?charset=utf8mb4"
- 为什么需要设定utf8mb4,mysql下utf8默认是utf8mb3三个字节,中文会出现4个字节
- 用