JDBC url为MySQL配置使用utf8字符编码 [英] JDBC url for MySQL configuration to use utf8 character encoding

查看:440
本文介绍了JDBC url为MySQL配置使用utf8字符编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MySQL 5.6配置



我已手动配置 /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

从控制台:

  mysql>显示变量,如char%; 
+ -------------------------- + ------------------ ---------- +
| Variable_name |价值|
+ -------------------------- + ------------------ ---------- +
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem |二进制|
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | / usr / share / mysql / charsets / |
+ -------------------------- + ------------------ ---------- +
8行(0.01秒)



< h2>应用程序配置

现在,对于Web应用,我在Tomcat的 context.xml中使用了这两个连接url

  url =jdbc:mysql:// localhost:3306 / test?autoReconnect = true& amp; amp; useUnicode = true& amp ; characterEncoding = UTF-8

url =jdbc:mysql:// localhost:3306 / test?autoReconnect = true& amp; useUnicode = true& amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; characterSetResults = utf8& amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp;

 显示变量,如char%; 
+ -------------------------- + ------------------ ---------- +
| Variable_name |价值|
+ -------------------------- + ------------------ ---------- +
| character_set_client | utf8mb4 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem |二进制|
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | / usr / share / mysql / charsets / |
+ -------------------------- + ------------------ ---------- +






这里可能有什么问题?为什么它显示 utf8mb4 而不是 utf8

解决方案

您可能需要执行以下操作:



MySQL Connector / J 5.1.13(2010-06-24)中的更改




  • 连接器/ J不支持服务器5.5.2和更新版本的utf8mb4。



    Connector / J now auto-检测配置了character_set_server = utf8mb4的服务器,或者在建立连接时使用的SET NAMES =调用中处理使用characterEncoding = ...作为utf8mb4传递的Java编码utf-8。 (Bug#54175)



MySQL 5.6 Configuration

I have configured /etc/mysql/my.cnf manually to use utf8. See below:

[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

url="jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"

url="jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=utf8&amp;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?

解决方案

You may have to do with the following:

Changes in 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 using characterEncoding=... as utf8mb4 in the SET NAMES= calls it makes when establishing the connection. (Bug #54175)

这篇关于JDBC url为MySQL配置使用utf8字符编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆