java - 调试 MySQL 字符集错误

标签 java mysql jpa character-encoding

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

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

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

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

[mysqld]
default-character-set=utf8

如果我跑

SHOW TABLE STATUS;

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

utf8_general_ci

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

还有这个: mysql> SHOW CREATE DATABASE 门;

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

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

最佳答案

你有没有:

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

在您的 HTML 页面中?

关于java - 调试 MySQL 字符集错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247005/

相关文章:

php - MySQL子串/数组性能

java - 通过带有 Spring 数据的日期进行对象恢复

java - 如何在 Unix 中使用 rpm 文件安装 java

java - 创建数组的独立副本

java - 编译失败: Subprocess failed

php - 使用 cron 作业为每个用户安排可变时间的每日通知

mysql - NodeJS MySQL模块的escape()/escapeId()方法是如何工作的?

spring - EntityManager bean 的 @Autowired 与 @PersistenceContext

java - Spring mvc @RequestBody如何用@EmbeddedId解析JPA实体

java - Optional 返回值为 null 时不抛异常