开发者社区> 问答> 正文

如何解决“字符串值错误”错误?

在注意到一个应用程序倾向于由于不正确的字符串值错误而丢弃随机电子邮件之后,我经过了,并切换了许多文本列以使用utf8列字符集和默认列归类(utf8_general_ci),以便它可以接受它们。这修复了大多数错误,并使应用程序在遇到非拉丁电子邮件时也停止出现sql错误。

尽管如此,某些电子邮件仍然导致程序遇到不正确的字符串值错误: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)

内容列是MEDIUMTEXT使用utf8列字符集和utf8_general_ci列排序规则的数据类型。在此列中没有可切换的标志。

请记住,除非绝对必要,否则我不想触摸甚至查看应用程序源代码:

是什么导致该错误?(是的,我知道电子邮件中到处都是随机垃圾,但我认为utf8可以允许) 我该如何解决? 此修复程序可能产生什么影响? 我考虑的一件事是在打开二进制标志的情况下切换到utf8 varchar([some large number]),但我对MySQL并不熟悉,也不知道这样的修复是否有意义。

展开
收起
保持可爱mmm 2020-05-11 11:57:26 670 0
1 条回答
写回答
取消 提交回答
  • "\xE4\xC5\xCC\xC9\xD3\xD8"无效的UTF-8。使用Python测试:

    "\xE4\xC5\xCC\xC9\xD3\xD8".decode("utf-8") ... UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data 如果您正在寻找避免解码数据库中错误的方法,则cp1252编码(又称“ Windows-1252”或“ Windows Western European”)是最宽松的编码-每个字节值都是一个有效的代码点。

    当然,它不再会理解真正的UTF-8,也不会理解任何其他非cp1252编码,但是听起来您不太在意这一点?来源:stack overflow

    2020-05-11 17:10:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载