mysql 编码问题
Cause: java.sql.SQLException: Incorrect string value: '\xF0\xA1\x90\x93\xE6\x9D...' for column 'content' at row 141
; uncategorized SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\xA1\x90\x93\xE6\x9D...' for column 'content' at row 141; nested exception is java.sql.SQLException:
mysql 默认字段编码 utf8,不支持表情字符,特殊字符和少量汉字,如果出现上面的 Incorrect string value: XXXX for column XXXX 就是这种问题。
改成utf8mb4就可以支持
实测 𡐓 子不支持,手机常见输入法的表情不支持。
微信里面的显示:
utf8 动态长短,可以用用1-6个字节表示一个字符(不同时期标准不一样), mysql 默认的utf8 类型最多只有3个字节,mysql 5.5.3 以后加入类型 utf8mb4 最多可以有4 个字节,支持了一些表情,和一些生僻字 ,mb4即 most bytes 4
集合类型:
utf8mb4_unicode_ci 使用了 unicode 排序,特殊字符当做独立的排序元素
utf8mb4_general_ci 速度更加快,但是部分特殊字符 会单做普通字符处理,所以在有特殊字符的地方,排序结果和utf8mb4_unicode_ci 不同。
总结编码方式用 tf8mb4 更好,用户很多时候会输入表情。排序方式都行区别不大,关心特殊字符顺序的用 unicode方式
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2021-07-16 11:05 zhangyukun 阅读(261) 评论(0) 编辑 收藏 举报