以下のaspの問題クラシックASPグレムリムにリストされているように、Tomcatとjspで同じ問題に直面しており 、HTML特殊文字が使用されるたびにÂがテキストに挿入されます
tomcat 5 と jsp を使用します。±20°C のような文字列を入力して別の JSP に送信すると、送信後の結果のパラメーターは ±20°C になります。追加文字「Â」が、リクエスト自体のすべての特殊文字の前に追加されています。この問題を解決するにはどうすればよいですか?
ありがとう、
以下のaspの問題クラシックASPグレムリムにリストされているように、Tomcatとjspで同じ問題に直面しており 、HTML特殊文字が使用されるたびにÂがテキストに挿入されます
tomcat 5 と jsp を使用します。±20°C のような文字列を入力して別の JSP に送信すると、送信後の結果のパラメーターは ±20°C になります。追加文字「Â」が、リクエスト自体のすべての特殊文字の前に追加されています。この問題を解決するにはどうすればよいですか?
ありがとう、
これは、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」を追加してください。
試す
<%@ page pageEncoding="utf-8" %>
と
request.setCharacterEncoding("utf-8");
同様の問題がありましたが、<head> ブロックの次の <meta> 行を変更すると修正されたようです。
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
重要なのはutf-8です!
それが役立つことを願っています。
これは、ISO ラテン語ソース データが途中で UTF-8 にトランスコードされている場合の症状です。文字エンコーディングを確認してください。
要点: byte
-char
変換が含まれる各ステップでは、どこでも同じ正確な文字エンコーディングを指定する必要があります。世界中のあらゆる人間のキャラクターをカバーするのUTF-8
は、完璧な選択です。
この文字エンコーディングを指定するには、いくつかの手順が必要です:GET
クエリ パラメータの解析 (appserver 設定で構成可能)、POST
リクエスト本文の解析 (フィルタを使用して構成可能)、応答ストリームへの書き込み ( @page pageEncoding
JSP またはHttpServletResponse#setCharacterEncoding()
サーブレットを使用して構成可能) 。 、データベースへの読み取り/書き込み (DB テーブル自体で構成可能)、ファイルへの読み取り/書き込み (および を使用して構成可能InputStreamReader
) OutputStreamWriter
。
この記事では、より詳細な背景情報と完全なコード ソリューションを見つけることができます。
お役に立てれば。