编码故障排除



我正在做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=yescharacterEncoding=UTF-8参数来实现这一点。例如

<>之前jdbc: mysql://localhost: 3306/db_name吗?useUnicode = yes&characterEncoding = utf - 8之前

它可以在本地Java开发环境中工作,这可能是因为您已经将环境的平台默认字符集配置为UTF-8。

最新更新