Post モードで送信されたデータの場合、request.setCharacterEncoding("gb2312"); を使用して、リクエスト パラメーターを取得するときに使用するエンコーディングを明示的に指定できます。 ただし、この方法は投稿の場合にのみ有効です。
request.setCharacterEncoding("gb2312"); これが GET 送信に対して無効である理由は、このコードはリクエスト エンティティのエンコーディングを設定するだけであり、GET によって送信されたデータはリクエスト ライン [リソース名?param1 ="Zhang San"¶m2=123] のため、GET リクエストメソッドは無効です。
Get メソッドで送信されたデータの場合、文字化けを手動で解決するしかありません。
String newName=newString(name.getBytes("ISO8859-1"),"gb2312"); String user=newString(request.getParameter("user").getBytes("ISO-8859-1"),"UTF-8");
もちろん、この方法は Post メソッドにも有効です。
tomcat の server.xml で http コネクタの URIEncoding を構成して、リクエスト パラメーターを取得するときにサーバーがデフォルトで使用するエンコーディングを指定できます。
次のステートメントは通常、中国語の文字化けの問題を解決するためにサーブレットで使用されます。
request.setCharacterEncoding() は、リクエストから取得した値、またはデータベースから取得した値を設定します。 。
response.setContentType() の目的は、ブラウザの動作を制御することです。つまり、指定されたエンコードを使用してデコードするようにブラウザを制御することです (HTTP 応答のエンコードを指定し、表示されるエンコードを指定します)ブラウザによる)。
response.setCharacterEncoding() は、response.getWriter() によって出力される文字化けの問題を解決するために使用されますが、response.getOutputStream() の場合は、この解決策の必要はありません。文 レスポンスオブジェクト内のデータをUTF-8でデコードしてブラウザに送信します。
response.getOutputStream().write(" Chinese".getBytes()) データを出力します。これはバイト ストリームです。メモリへの書き込み時に使用されるエンコーディングが出力に使用されます。
Java の詳細については、PHP 中国語 Web サイトの java 基本チュートリアル 列に注目してください。
以上がJavaパラメータが文字化けする問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。