テキストボックスのjspから、 "göteborg"を入力しています。 しかし、私がサーブレットで「request.getParameter」を実行すると、「göteborg」が返されます。
この動作は正しいですか?
jspページで以下の設定があります。
<%@ page contentType="text/html; charset=utf-8" language="java"%>
<meta charset="utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
request.getParameterを呼び出す前に、サーブレットで次の行も設定しました。
request.setCharacterEncoding("utf-8");
何が欠けている?
回答:
回答№1は1glassfishを使用している場合は、この行を自分の web.xml
:
<parameter-encoding default-charset="utf-8"/>
また、からいくつかの良いアドバイスがあります Tomcatの文字エンコーディングに関するFAQ (ただし、どのサーブレットコンテナにも適用されます)
デフォルトのエンコーディングをutf-8に設定して文字エンコーディングフィルタを使用する contentTypeに文字セット名を含めるようにすべてのJSPを変更します。
文字エンコードフィルタまたはJSPページでエンコードをutf-8に設定する前に、要求パラメータを読み取る可能性があるバルブまたはフィルタを無効にします。
回答№2の場合は0
(閉鎖を提供するために質問に答える)。
Tomcatの要求/応答のデフォルトのエンコードはISO-8859-1です(サーブレット仕様で要求されているとおり)。
Ref: http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
8080コネクタのserver.xmlでURIEncoding = "utf-8"を設定することで問題を解決しました。
これらの素敵な人々によって提供されたすべてのコメントを参照してください。