用于 MySQL 配置的 JDBC url 使用 utf8 字符编码
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18058297/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
JDBC url for MySQL configuration to use utf8 character encoding
提问by Kowser
MySQL 5.6 Configuration
MySQL 5.6 配置
I have configured /etc/mysql/my.cnf
manually to use utf8
. See below:
我已/etc/mysql/my.cnf
手动配置为使用utf8
. 见下文:
[mysqld]
character-set-server=utf8
character-sets-dir=/usr/share/mysql/charsets
[mysql]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqldump]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
[client]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
From console:
从控制台:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
Application configuration
应用配置
Now for the web-app I used both of this connection url in Tomcat's context.xml
现在对于网络应用程序,我在 Tomcat 中使用了这两个连接 url context.xml
url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"
url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&connectionCollation=utf8_general_ci"
Above does not work and gives me following for the application.
以上不起作用,并为我提供了以下应用程序。
show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
What might be wrong here? Why it is showing utf8mb4
instead utf8
?
这里可能有什么问题?为什么它显示utf8mb4
代替utf8
?
回答by wchiquito
You may have to do with the following:
您可能需要处理以下问题:
Changes in MySQL Connector/J 5.1.13 (2010-06-24)
MySQL Connector/J 5.1.13 的变化 (2010-06-24)
Connector/J did not support utf8mb4 for servers 5.5.2 and newer.
Connector/J now auto-detects servers configured with
character_set_server=utf8mb4
or treats the Java encoding utf-8 passed usingcharacterEncoding=...
asutf8mb4
in theSET NAMES=
calls it makes when establishing the connection. (Bug #54175)
Connector/J 不支持 utf8mb4 用于服务器 5.5.2 和更新版本。
现在,Connector/J 会自动检测配置有
character_set_server=utf8mb4
Java 编码 utf-8 的服务器或将其处理characterEncoding=...
为utf8mb4
在SET NAMES=
建立连接时进行的调用中使用的 Java 编码 utf-8 。(错误#54175)
回答by J Roysdon
For your web-app please try characterEncoding=utf8
instead of UTF-8. That resolved my SonarQube container issue.
对于您的网络应用程序,请尝试characterEncoding=utf8
代替 UTF-8。这解决了我的 SonarQube 容器问题。