java web框架(Ninja和Spark框架)的MySQL unicode错误
我第一次使用Spark框架和ORMLite来处理在网页上以表单形式提交的数据,我在提交汉字时看到了unicode问题。我首先认为问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用java web框架(Ninja和Spark框架)的MySQL unicode错误,java,mysql,unicode,encoding,character-encoding,Java,Mysql,Unicode,Encoding,Character Encoding,我第一次使用Spark框架和ORMLite来处理在网页上以表单形式提交的数据,我在提交汉字时看到了unicode问题。我首先认为问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用utf8\u general\u ci 因此,我尝试使用Ninja框架使用相同的MySQL数据表提交相同的表单,但是,同样的问题也发生了。中文字符原来是“??”(数据库字段中的一串问号) 在我的玩具程序中,我有一个名为“Book”的模型类,它有三个实例变量: Long id; String aut
utf8\u general\u ci
因此,我尝试使用Ninja框架使用相同的MySQL数据表提交相同的表单,但是,同样的问题也发生了。中文字符原来是“??”(数据库字段中的一串问号)
在我的玩具程序中,我有一个名为“Book”的模型类,它有三个实例变量:
Long id;
String author;
String title;
因此,html表单只有两个输入字段:author和title
我在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
>mysql -uroot -p
mysql>use mydb;
mysql>alter database mydb character set utf8;
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
根本不清楚你在哪里看到问号。这很可能只是您用来查看数据库的MySQL工具的问题,或者是您如何获取数据的问题。使用Java,您能否再次获取正确的数据?查看您获取的字符串中每个字符的Unicode值。我使用phpmyadmin作为UI来查看存储在数据库中的数据。我还有一个java方法从数据库中读取数据,它在网页上显示一个列表。java输出的书籍列表也显示了一系列问号。好的,接下来您需要检查数据的确切位置。请参阅和(第一个链接是关于C#,但同样的原则也适用于Java)谢谢,我将查看它。