调试MySQL charset错误

时间:2009-08-07 21:01:59

标签: java mysql jpa character-encoding

我有一个项目,我从HTML文件中抓取一些数据,将其放入MySQL数据库,然后再次读出并显示给用户。每当servlet将一些内容插入数据库时​​,“£”符号将作为inserted插入,并在再次读出时以此形式显示。

应用程序使用Java(使用Spring)和JPA编写,EclipseLink作为JPA实现。

我已将问题缩小到插入MySQL,因为当我在控制台中查看表时会出现问号。

我已将MySQL配置为使用UTF-8作为my.cnf中的标准编码

[mysqld]
default-character-set=utf8

如果我跑

SHOW TABLE STATUS;

我可以看到表上的排序规则是

utf8_general_ci

表明char集也是UTF-8。

还有这样的: MySQL的> SHOW CREATE DATABASE gate;

+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| gate     | CREATE DATABASE `gate` /*!40100 DEFAULT CHARACTER SET utf8 */ | 
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

那么,Java是完全unicode(?)而我的数据库设置为UTF-8,我在哪里可以查找错误配置/错误?

3 个答案:

答案 0 :(得分:0)

你有:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在您的HTML页面中

答案 1 :(得分:0)

你的连接字符集是什么?请查看Connect/J configuration properties以及dealing with charsets

上的部分

答案 2 :(得分:0)

您还应该告诉您的mysql驱动程序使用utf8

db.url=jdbc:mysql://HOST:3306/DB?characterEncoding=utf8