java mysql地址中的 useUnicode=true&characterEncoding=utf-8
作者:互联网
useUnicode=true 后面的配置 characterEncoding配置才能生效
characterEncoding=utf-8的配置的作用主要配置的是mysql服务端的编码,mysql驱动的代码中,会将将要发送mysql服务端的sql使用characterEncoding指定的值进行转码,然后将转码后的字节发送到mysql服务端
而mysql服务端响应的编码是如何转换的呢,主要是mysql服务端返回结果的时候,字节流的某一位标识的是当前字段的编码格式,mysql驱动程序在解析数据时,会使用mysql服务端返回的字段编码格式进行解码;解码后然后通过charset对象的decode方法进行转码,这个时候会根据自己项目当前的编码方式自动识别。
最后得出的结论:
1. useUnicode=true&characterEncoding=utf-8 主要配置的客户端发送数据到服务端时候,需要转换成什么样的编码发送给服务端
2. 客户端接收到的数据不会出现乱码,有一个前提,就是数据库中的数据编码没有错误的情况下
官方也建议我们characterEncoding这个值的配置尽量与mysql服务端的编码一致
如果不一致,会导致我们看到的结果出现乱码
比如: mysql服务端的编码为UTF-8 而这个时候我们配置了 useUnicode=true&characterEncoding=gbk
那么如果我们这时候插入了一条带有中文的数据,则此时mysql中的此中文数据为gbk的
然后我这时候查询这条数据,mysql会将gbk的数据返回给我们,但告诉我们说 这个是UTF-8编码的,这个时候mysql驱动包就会用UTF-8的编码去解码这段数据,这时候则会出现乱码
标签:编码,java,useUnicode,characterEncoding,mysql,true,服务端 来源: https://blog.csdn.net/qq_31307269/article/details/98954724