我正在做j2ee项目。它应该工作宽度英语和俄语。我有一个EncodingFilter它有映射'/* '每次做一件事:request.setCharacterEncoding("UTF-8");
我还安装了MySQL 5.5,表和数据库的字符集设置为utf-8
,排序设置为utf8_general_ci
。
在我的本地机器上一切正常,俄语lang正确地存储在db.
然后我试着在jelastic.com上测试我的应用程序。在那里,我还选择了MySQL,导入转储,将charset设置为utf-8
,并将排序设置为utf8_general_ci
。当我添加俄语单词到db时,我只看到'?????'。但是和dump一起来的老唱片是好的!我真的不知道怎么了
您需要告诉MySQL JDBC驱动程序使用UTF-8作为客户端编码而不是平台默认编码。如果平台默认字符集不是UTF-8,那么只要JDBC驱动程序正在使用的平台默认字符集没有覆盖字符,就会导致?
存储在数据库中。
您可以通过向JDBC URL添加useUnicode=yes
和characterEncoding=UTF-8
参数来实现这一点。例如
它可以在本地Java开发环境中工作,这可能是因为您已经将环境的平台默认字符集配置为UTF-8。