ホームページ >ウェブフロントエンド >フロントエンドQ&A >HTML投稿が文字化けした場合の対処法

HTML投稿が文字化けした場合の対処法

藏色散人
藏色散人オリジナル
2021-05-27 10:40:452273ブラウズ

html 文字化けした投稿の解決策: まず、対応するコード ファイルを開き、投稿によって渡された ISO エンコードされたコンテンツを UTF-8 形式のコンテンツに変更します。

HTML投稿が文字化けした場合の対処法

この記事の動作環境: Windows 7 システム、HTML5 バージョン、DELL G3 コンピューター

HTML は post メソッドを使用して中国語コンテンツを送信しますエラー解決方法は文字化けです

今日例をやっているとき、postメソッドを使ってフォームを送信しましたが、漢字が入っていると別のページで表示すると必ず文字化けしてしまいます。

##ただし、送信メソッドを get に変更すると、このエラーは発生しません。

詳細なエラーについては、以下の図とコードを参照してください。

HTML コード:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>测试Cookie的设置和获取</title>
 6 </head>
 7 <body>
 8     <form action="/TestTomcat/SetCookie" method="post">
 9         站点名:<input type="text" name="name"><br>
10         站点URL:<input type="text" name="url"><br>
11         <input type="submit" value="提交" />
12     </form>
13 </body>
14 </html>

サーブレット コード、一部をインターセプト:

 1 response.setContentType("text/html;charset=utf-8");
 2         
 3         PrintWriter out=response.getWriter();
 4         
 5         String title="设置Cookie实例";
 6         String docType="<! DOCTYPE html>\n";
 7         out.println(docType+
 8                 "<html>\n"+
 9                 "<head><title>"+title+"</title></head>"+
10                 "<body bgcolor=\"#f0f0f0\">\n"+
11                 "<h1 align=\"center\">"+title+"</h1>\n"+
12                 "<ul>\n" +
13                 "  <li><b>站点名:</b>"
14                 + request.getParameter("name")  + "\n</li>" +
15                 "  <li><b>站点 URL:</b>"
16                 + request.getParameter("url") + "\n</li>" +
17                 "</ul>\n" +
18                 "</body></html>");

エラー:

先頭にコードブロックの位置が間違っているのではないかと思い、上記のコードをdoPostに入れて試してみましたが、やはりエラーが発生しました。

それでは、ポストメソッドを使用して中国語を送信するにはどうすればよいでしょうか?

情報を検索して、

投稿してください

この場合、response.setCharacterEncoding が影響します。response.setCharacterEncoding が設定されていない場合、値は null になり、iso はデフォルトで使用されます。再エンコード (デコード) するには -8859-1。
ブラウザは、自身のページのエンコード形式を開始エンコード形式として使用し、文字をバイトにエンコードして送信しますが、tomcat に関しては、tomcat は再エンコード (デコード) 形式に干渉しません。 response.getCharacterEncoding が null の場合、文字を再エンコード (デコード) するためにデフォルトで iso-8859-1 が使用されます。設定されている場合、文字は設定されたエンコード形式に従って再エンコード (デコード) されます。

POST は半角データを送信します。そのため、POST で送信されるデータのエンコーディングは ISO-8859-1 の半角データです。したがって、英語や数字は文字化けしません...こちら この場合、フィルターとserver.xmlの設定が無効です。もちろん、setCharacterEncodingの原理はフィルターの原理と同じであるため、request.setCharacterEncoding()も無効です。

上記の正しい対処方法問題は次のとおりです。

 String nameStr=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

ポストで渡された ISO エンコードされたコンテンツを UTF-8 形式のコンテンツに変更して出力します。

推奨学習: 「

HTML ビデオ チュートリアル

以上がHTML投稿が文字化けした場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。