Java Web アプリケーションで解決された JDBC 文字エンコーディングの問題
GlassFish 3 にデプロイされ、JPA (EclipseLink) を使用している Java Web アプリケーション内MySQL データベースで、ユーザーが update() メソッドを通じてデータを保存するときにエンコードの不一致が発生しました。文字列フィールドの文字は「?」に置き換えられました。
サーバー、Web ページ、データベースを UTF-8 を使用するように構成したにもかかわらず、問題は解決しませんでした。データは後続のページに正しく表示され、NetBeans のデバッグ中に有効であるように見えましたが、デバッグ変換の正確さには疑問が残りました。
JDBC 構成の犯人
の追跡根本的な原因は、このシナリオでは JPA ではなく JDBC が文字エンコーディングを管理していることが判明しました。次のパラメータを JDBC 接続 URL に追加することで、
characterEncoding=utf8
エンコードの問題が解決されました。変更された接続 URL により、MySQL データベースとの JDBC 通信に UTF-8 文字エンコーディングが明示的に定義されるようになり、文字列フィールドの整合性の問題が解決されます。
以上がJava Web アプリケーションでデータを保存するときに、文字が「?」に置き換えられるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。