17

奇妙な文字エンコーディングが行われています。Tomat 6 で JSP (JSTL) と Struts を使用しています。

私は自分の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 end) は次のようになります。

Gaz Métro

ただし、フロントエンドでは次のように表示されます。

Gaz Métro

これが正しい方法です。これについて私は何ができますか??

4

3 に答える 3

21

以下を実行

1) HTML コード

 <meta contentType="text/html; charset="UTF-8"/>

2) IE ビューのブラウザ設定 -- エンコード -- Unicode (UTF-8)

3) Tomcat Server 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」である必要があります

于 2012-06-25T08:38:59.007 に答える
11

これらの手順を実行しましたか?

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

以下にコピー:

すべての文字エンコーディングとして UTF-8 を使用するのが安全な方法です。これは、ほぼすべての状況で機能するはずです。

UTF-8 の使用に完全に切り替えるには、次の変更を行う必要があります。

  1. server.xml で URIEncoding="UTF-8" を設定します。参照: HTTP コネクタ、AJP コネクタ。

  2. デフォルトのエンコーディングが UTF-8 に設定された文字エンコーディング フィルタを使用する

  3. すべての JSP を変更して、contentType に文字セット名を含めます。

    たとえば<%@page contentType="text/html; charset=UTF-8" %>、通常の JSP ページと<jsp:directive.page contentType="text/html; charset=UTF-8" />XML 構文のページ (別名 JSP ドキュメント) に使用します。

  4. すべてのサーブレットを変更して、応答のコンテンツ タイプを設定し、コンテンツ タイプに文字セット名を含めて UTF-8 にします。

    response.setContentType("text/html; charset=UTF-8")またはを使用しresponse.setCharacterEncoding("UTF-8")ます。

  5. 使用するすべてのコンテンツ生成ライブラリ (Velocity、Freemarker など) を変更して、UTF-8 を使用し、生成される応答のコンテンツ タイプで UTF-8 を指定します。

  6. 文字エンコーディング フィルタまたは JSP ページがエンコーディングを UTF-8 に設定する前に、リクエスト パラメータを読み取る可能性のあるバルブまたはフィルタを無効にします。詳細については、http://www.mail-archive.com/users@tomcat.apache.org/msg21117.htmlを参照してください。

于 2012-06-18T20:01:16.960 に答える
2

(server.xml内の)Tomcatコネクターの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"/>
于 2012-06-18T19:41:07.393 に答える