java - Java Web 框架(Ninja 和 Spark 框架)出现 MySQL unicode 错误

标签 java mysql unicode encoding character-encoding

我首先使用Spark框架和ORMLite处理网页上表单提交的数据,在提交中文字符时看到了unicode问题。我首先想到问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用utf8_general_ci

因此我尝试使用Ninja框架使用相同的MySQL数据表提交相同的表单,但是,出现了相同的问题。汉字竟然是“???” (数据库字段中的一串问号)。

在我的玩具程序中,我有一个名为“Book”的模型类,它具有三个实例变量:

Long id;
String author;
String title;

因此,html 表单只有两个输入字段:作者和标题。

我在 BookDAO 类中编写了以下方法,并使用 Hibernate 将数据保存到 MySQL 中:

    @Transactional
    public boolean postBook(String author, String title)
    {
        EntityManager entityManager = entityManagerProvider.get();

        Book book = new Book(author, title);
        entityManager.persist(book);

        return true;
    }

我尝试将mysql的字符集更改为gbk(中文字符编码),但仍然没有成功。我注意到的另一件事是编码错误只发生在我的 Ubuntu 服务器上,而不是发生在我的 Mac 服务器上。这让我思考这两个操作系统的差异导致了我的 MySQL 问题。

最佳答案

通过执行以下任一操作解决了我的编码问题。两种方法都需要重启mysql

  1. 登录mysql终端:

    >mysql -uroot -p
    mysql>use mydb;
    mysql>alter database mydb  character set utf8;
    

或者执行以下操作来永久更改 MySQL 的字符集:

  1. 编辑 my.cnf:

> sudo vim/etc/mysql/my.cnf

将以下条目添加到 my.cnf

[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

关于java - Java Web 框架(Ninja 和 Spark 框架)出现 MySQL unicode 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982939/

相关文章:

java - Java CRUD 应用程序的框架

java - Swing - 带合成器的自定义按钮

java - 添加用户名到审计表

mysql - 如何根据另一个表中的值搜索和替换某些列值?

Java 解析 unicode 数学。 JSON 中的公式

windows - Vim:Windows 下终端中的编码(Unicode)

java - 混合不同版本的 Java 库

java - 如何使用 Activiti Engine 获取启动时间?

php - Unicode PHP 源文件

php - JQuery AJAX PHP post方法问题