Skip to content

11.1 QQ登录有特殊字符报错

1.MySQL的“utf8mb4”是真正的“UTF-8”。

2.MySQL的“utf8”是一种“专属的编码”,它能够编码的Unicode字符并不多。

##一、特殊字符

🍎过客
"\uD83C\uDF4E过客"
c4c8f8f530363ce512af5e40e9822e64

java.sql.SQLException: (conn=318298) Incorrect string value: '\xF0\x9F\x8D\x8E\xE8\xBF...' for column 'nickname' at row 1

##二、问题

###1.1366,"Incorrect string value:'\xF0\x9F\x98\x82...

保存时出现以下错误

1366,"Incorrect string value:'\\xF0\\x9F\\x98\\x82...

这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

###2.修改字符编码集

###3.本地数据库出现问题

只有本地安装的数据库修改 字段的字符集有问题,线上的数据库没问题
java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Query is: select * from users where nickname=? and is_exist = 1, parameters ['🍎过客6']

java.sql.SQLException: (conn=318163) Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

报错:客户端连接时报错,不支持该字符集

需要修改数据库配置文件my.cnf