2011-08-16 14 views
1

私はj2eeプロジェクトに取り組んでいます。英語とロシア語の両方の幅を扱うことになっています。私は「/ *」マッピングを持っており、すべての時間は、一つのことを行うEncodingFilterを持っているので:request.setCharacterEncoding("UTF-8");エンコードによるトラブルシューティング

私もMySQLの5.5がインストールされている、テーブルとデータベースの文字セットは、utf8_general_ciutf-8と照合に設定されています。

私のローカルマシンでは、すべて正常に動作し、ロシア語のlangは正しくdbに格納されます。

次に、私はjelastic.comで自分のアプリをテストしようとしました。そこでは、MySQL、インポートダンプ、文字セットをutf-8、照合順序をutf8_general_ciに設定しました。私がdbにロシアの単語を追加するとき、私は '?????'しか見ることができません。しかし、ダンプと一緒に来た年配のレコードは大丈夫です!私は文字通り何が間違っているのか分かりません。

+0

正確に "?????"が表示されますか?いくつかのDB管理ツールによるDB?またはHTTP応答ですか? – BalusC

+0

私はphpMyAdminを使用しています。しかし、 '??????'新しいレコードだけをマークし、ダンプの元老は問題ありません。だから私はphpMyAdmin私の状況に影響を与えないと思う。 – Dmitry

+0

それはちょうど質問を除外することでした:)私は答えを投稿しました。 – BalusC

答えて

1

プラットフォームのデフォルトではなく、クライアントサイドエンコーディングとしてUTF-8を使用するようにMySQL JDBCドライバに指示する必要があります。プラットフォームのデフォルトの文字セットがUTF-8でない場合、JDBCドライバが使用しているプラ​​ットフォームのデフォルトの文字セットで文字がカバーされていない場合は、?がデータベースに格納されます。

useUnicode=yescharacterEncoding=UTF-8パラメータをJDBC URLに追加することで、これを行うことができます。例えば。すでにお使いの環境のプラットフォームのデフォルトの文字セットがUTF-8になるように構成しましたので、それはあなたのローカルのJava開発環境上で動作することを

 
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8 

可能性が高いです。

+1

ありがとう!あなたが知っている、インターナリゼーションは本当に***の痛みかもしれません) – Dmitry

+0

これはアメリカ人がもっと多くの国を気にしないからです;) – smas

関連する問題