使用dble出现乱码,如何排查? #3032
-
版本:
现象:应用程序使用如下的jdbc url连接dble:
应用端得到的结果是乱码结果,应该如何调整字符集参数? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
前置知识:MySQL中的UTF-8MySQL定义的UTF8是阉割版的,MySQL语境下的utf8mb4等价于正常语境中的UTF8。 MySQL中的字符集和参数在谈及MySQL字符集时,还必须介绍校验集。字符集(character set)表示字符以何种规则进行编码,校验集(collation)表示字符以何种规则进行比较和排序 (例如:是否大小写敏感)。 MySQL有以下字符集相关的设置:
四个只能设置字符集的参数:
MySQL client中, 有一个内存变量 存储层:数据库/数据表/数据列 均由单独的字符集+校验集参数,通过CREATE语句可进行设置。MySQL文档中有详细记述。 具体每个参数的作用参考文档:https://opensource.actionsky.com/20190328-mysql-charset/ JDBC 字符集参数
参考链接: JDBC 如何设置 utf8mb4字符集参考:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-charsets.html 最后一部分 结论通过抓取general日志,发现数据从client返回给前端后出现乱码。 因此,在jdbc url中设置 &characterSetResults=UTF-8 |
Beta Was this translation helpful? Give feedback.
前置知识:
MySQL中的UTF-8
MySQL定义的UTF8是阉割版的,MySQL语境下的utf8mb4等价于正常语境中的UTF8。
MySQL中的字符集和参数
在谈及MySQL字符集时,还必须介绍校验集。字符集(character set)表示字符以何种规则进行编码,校验集(collation)表示字符以何种规则进行比较和排序 (例如:是否大小写敏感)。
MySQL有以下字符集相关的设置:
三组设置字符集+校验集的参数:
四个只能设置字符集的参数:
MySQL client中, 有一个内存变量
charset_info
存储层:数据库/数据表/数据列 均由单独的字符集+校验集参数,通过CREATE语句可进行设置。MySQL文档中有详细记述。
具体每个参数的作用参考文档:https://opensource.actionsky.com/20190328-mysql-charset/
JDBC 字符集参数
会设置MySQL系统变量 '…