これは、両側がそれぞれの側の文字エンコードの違いを完全に認識している場合にのみ発生します。反対側で使用されている文字エンコードでカバーされていない文字は、疑問符?
に置き換えられます。 。そうでなければ、Mojibake
を見たことでしょう。 。
この特定のケースでは、これらの側はJava側とデータベース側であり、JDBCドライバーがメディエーターとして使用されます。これを修正するには、JDBCドライバーに、これらの文字がどのエンコードに含まれるかを通知する必要があります。これを行うには、useUnicode=true&characterEncoding=UTF-8
を設定します。 JDBC接続URLのパラメータ。
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8
次に、クライアントからサーバーにパラメータを送信する方法によっては、リクエストのエンコーディングも修正する必要がある場合があります。 request.setCharacterEncoding("UTF-8")
を削除すると文字化けが表示されるという事実を考えると 、POSTを使用しています。その部分は問題ありません。
その場合、GETを使用してパラメーターを送信する場合は、サーバー側でURIエンコードを構成する必要があります。使用しているサーバーは不明ですが、Tomcatなどの場合は、<Connector>
を編集する必要があります。 /conf/server.xml
のエントリ 次のように:
<Connector ... URIEncoding="UTF-8">