内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
电子邮件仍然导致程序遇到错误的字符串值错误:(Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
内容列是MEDIUMTEXT
数据对象,它使用utf8
列字符集和utf8_general_ci
列整理
"\xE4\xC5\xCC\xC9\xD3\xD8"
是无效的。使用Python进行测试:
>>> "\xE4\xC5\xCC\xC9\xD3\xD8".decode("utf-8") ... UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data
应该在连接之后这样做:
SET NAMES 'utf8'; SET CHARACTER SET utf8;
接下来,验证存储数据的表是否具有UTF 8字符集:
SELECT `tables`.`TABLE_NAME`, `collations`.`character_set_name` FROM `information_schema`.`TABLES` AS `tables`, `information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations` WHERE `tables`.`table_schema` = DATABASE() AND `collations`.`collation_name` = `tables`.`table_collation` ;
最后,检查数据库设置:
mysql> show variables like '%colla%'; mysql> show variables like '%charac%';