前两天项目中出现一个错误:在把这个字“?”存进MySQL中时候出现错误:
Incorrect string value: '\xF0\xA8\x8B\xA2' for column 'CONTENT' at row 1
在网上找了不少相关的资料,都是说原因出现在表的字符集上,根据资料把表的字符集改为utf8,但是没有效果,然后把字段的字符集也改为utf8,还是没有效果。详情可以参考此文章:https://blog.csdn.net/ch717828/article/details/41357431/
因为“?”字是繁体字,查看log发现在浏览器端的读取出现问题,浏览器端使用了UTF8读取,然后使用GBK来编码后再传到后端,后端存在MySQL,然后MySQL把此字编成“\xF0\xA8\x8B\xA2”存在表中,就是在这一步骤出现问题。
“?”的UTF-8编码有两种结果:
“��” “%F0%A8%8B%A2”
至此还是没有找到原因,所以没有解决此问题,此问题最后交回给香港的同事处理了。