奇妙な文字エンコーディングが行われています。私はJSP(JSTL)とStrutsをTomat 6で使用しています。
私はJSPページエンコーディングを持っています:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
問題は、encodeURIを使用してURLを渡そうとしたときです。
<script type="text/javascript">
$('#mailer_filter').change(function(){
var val = $(this).val();
console.log(val);
console.log(escape(val));
console.log(encodeURI(val));
location.href = 'mailList.a?' + encodeURI($(this).val());
});
</script>
アクション(Javaエンド)のパラメーターは次のようになります。
Gaz Métro
ただし、フロントエンドでは次のように表示されます。
Gaz Métro
これは正しい方法です。これについて私は何ができますか?
フォローしてください
1)HTMLコード
<meta contentType="text/html; charset="UTF-8"/>
2)IE View-Encoding-Unicode(UTF-8)のブラウザ設定
3)Tomcatサーバーserver.xml-Connectorタグに「URIEncoding」属性が追加されました
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
catalina.sh/catalina.bat-以下を追加
set Java_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8
set CATALINA_OPTS=-Dfile.encoding="UTF-8"
4)応答のMIMEタイプは「application/x-www-form-urlencoded」である必要があります
これらの手順を実行しましたか?
http://wiki.Apache.org/Tomcat/FAQ/CharacterEncoding#Q8
以下をコピー:
すべての文字エンコーディングとしてUTF-8を使用するのは安全です。これはほとんどすべての状況で機能するはずです。
UTF-8の使用に完全に切り替えるには、次の変更を行う必要があります。
Server.xmlでURIEncoding = "UTF-8"を設定します。参照:HTTPコネクター、AJPコネクター。
デフォルトのエンコーディングがUTF-8に設定された文字エンコーディングフィルタを使用する
すべてのJSPを変更して、それらのcontentTypeに文字セット名を含めます。
たとえば、通常のJSPページには_<%@page contentType="text/html; charset=UTF-8" %>
_を使用し、XML構文(JSPドキュメント)のページには_<jsp:directive.page contentType="text/html; charset=UTF-8" />
_を使用します。
すべてのサーブレットを変更して、応答のコンテンツタイプを設定し、コンテンツタイプに文字セット名をUTF-8に含めます。
response.setContentType("text/html; charset=UTF-8")
またはresponse.setCharacterEncoding("UTF-8")
を使用します。
使用するコンテンツ生成ライブラリ(Velocity、Freemarkerなど)を変更して、UTF-8を使用し、生成する応答のコンテンツタイプにUTF-8を指定します。
文字エンコーディングフィルターまたはjspページでエンコーディングをUTF-8に設定する前に、要求パラメーターを読み取る可能性のあるバルブまたはフィルターを無効にします。詳細については、 http://www.mail-archive.com/[email protected]/msg21117.html を参照してください。
Tomcatコネクター(server.xml内)のURIEncodingパラメーターをUTF-8に設定してみてください。
例えば。:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"/>