2

以下のaspの問題クラシックASPグレムリムにリストされているように、Tomcatとjspで同じ問題に直面しており 、HTML特殊文字が使用されるたびにÂがテキストに挿入されます

tomcat 5 と jsp を使用します。±20°C のような文字列を入力して別の JSP に送信すると、送信後の結果のパラメーターは ±20°C になります。追加文字「Â」が、リクエスト自体のすべての特殊文字の前に追加されています。この問題を解決するにはどうすればよいですか?

ありがとう、

4

5 に答える 5

6

これは、UTF-8 ページを Latin-1 として表示することが原因です。たとえば、± は、Latin-1 では 0xB1 としてエンコードされますが、UTF-8 では 0xC2、0xB1 としてエンコードされます。0xC2 はたまたま Â です。

これは、JSP ページとしては奇妙です。通常、JSP はライターと「Content-Type」ヘッダーで同じエンコーディングを使用するため、常に同じエンコーディングが得られます。このようにエンコーディングを指定しているかどうかを確認し、

<%@page pageEncoding="UTF-8" %>

カスタムの「Content-Type」ヘッダーがある場合は、必ず「, charset=UTF-8」を追加してください。

于 2009-12-06T21:15:29.977 に答える
1

試す

<%@ page pageEncoding="utf-8" %>

request.setCharacterEncoding("utf-8");
于 2009-12-06T19:52:00.957 に答える
1

同様の問題がありましたが、<head> ブロックの次の <meta> 行を変更すると修正されたようです。

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

重要なのはutf-8です!

それが役立つことを願っています。

于 2009-12-06T19:54:35.617 に答える
1

これは、ISO ラテン語ソース データが途中で UTF-8 にトランスコードされている場合の症状です。文字エンコーディングを確認してください。

于 2009-12-06T19:44:50.267 に答える
0

要点: byte-char変換が含まれる各ステップでは、どこでも同じ正確な文字エンコーディングを指定する必要があります。世界中のあらゆる人間のキャラクターをカバーするのUTF-8は、完璧な選択です。

この文字エンコーディングを指定するには、いくつかの手順が必要です:GETクエリ パラメータの解析 (appserver 設定で構成可能)、POSTリクエスト本文の解析 (フィルタを使用して構成可能)、応答ストリームへの書き込み ( @page pageEncodingJSP またはHttpServletResponse#setCharacterEncoding()サーブレットを使用して構成可能) 。 、データベースへの読み取り/書き込み (DB テーブル自体で構成可能)、ファイルへの読み取り/書き込み (および を使用して構成可能InputStreamReader) OutputStreamWriter

この記事では、より詳細な背景情報と完全なコード ソリューションを見つけることができます。

お役に立てれば。

于 2009-12-07T01:53:20.517 に答える