当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-MySQL8新特性-默认字符集变更

金三银四精选java面试题-MySQL8新特性-默认字符集变更

来源:图灵教育
时间:2023-12-29 10:42:52
 

MySQL8新特性-默认字符集变更

 

我们知道在MySQL8.0版本之前,那么默认的字符集为latin-1 ,而UTF8字符集指向的是utf8mb3,不知道大家在工作中是否被它坑过,名字就非常具有误导性,在面对一些生僻字、表情之类的内容,进行存储时会提示SQL异常。

 

SQLException: Incorrect string value: ‘\xF0\xA1\x8B\xBE\xE5\xA2…’ for column ‘name’

 

utfmb3 后面的mb其实指的是 most bytes ,也就是最多占用几个字节。而mysql中字符串长度算的是字符数而不是字节数,那么对于char类型来说,需要保留足够的空间。我们用的utf8字符集,需要保留的长度就是 utf8 最长字符长度乘以字符串长度,所以这里理所当然的限制了 utf8 最大长度为 3。如果我们需要更好的一个兼容性,应该使用utf8mb4而不是utf8,对于char类型可能空间占用会多消耗一些, Mysql 官方建议是使用 VARCHAR  替代 CHAR。

 

在MySQL8.0开始,数据库的默认编码从latin1就改成了utf8mb4 ,避免了我们可能忘记修改而带来的问题,我们基本上不用再为字符集而操心了。