【问题标题】:Debugging a MySQL charset error调试 MySQL 字符集错误
【发布时间】:2009-08-07 21:01:58
【问题描述】:

我有一个项目,我从 HTML 文件中抓取一些数据,将其放入 MySQL 数据库,然后再次将其读出并显示给用户。每当 servlet 向 DB 中插入某些内容时,“£”符号就会被插入为 �,而当再次读出时,会显示为该符号。

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

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

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

[mysqld]
default-character-set=utf8

如果我跑了

SHOW TABLE STATUS;

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

utf8_general_ci

这表明字符集也是 UTF-8。

还有这个: mysql> 显示创建数据库门;

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

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

【问题讨论】:

    标签: java mysql jpa character-encoding


    【解决方案1】:

    你有:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    

    在您的 HTML 页面中?

    【讨论】:

      【解决方案2】:

      您的连接字符集是什么?看看Connect/J configuration properties 以及dealing with charsets 上的部分

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2022-10-13
          • 1970-01-01
          • 2015-02-26
          • 1970-01-01
          • 2021-08-19
          • 1970-01-01
          • 2022-11-22
          • 2020-09-21
          • 1970-01-01
          相关资源
          最近更新 更多