1

私たちは複数の言語を扱っており、韓国語もその 1 つです。アプリケーションでは、Tomcat レベルとエンコード用のスプリング フィルターの両方でエンコーディングを設定しましたが、何らかの理由で、Struts2 アクション クラスで request.getParameter を実行すると、受け取るそれだけ ??。

Tomcat エンコーディング

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" maxThreads="150"
           redirectPort="8443" URIEncoding="UTF-8"/>

スプリングフィルター

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
    </init-param>
</filter>

編集

したがって、「안녕하세요 kkk」として送信されたメッセージは、「????? kkk」として受信されます。

何が欠けている可能性がありますか?

よろしく、

アユシュ

4

3 に答える 3

1

ラベルがプロパティ ファイルにある場合は、utf8 ファイル エンコーディングを強制してみてください (Tomcat 起動スクリプトを確認してください)。

  1. Windows では
    、JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8 を設定します。

  2. Linux
    エクスポートの場合 JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8

これが役立つことを願っています:)

于 2013-03-29T11:42:15.903 に答える
1

GET リクエストが誤って解釈されるという同様の問題が発生しました。

URIEncodingその理由は、 と の両方をuseBodyEncodingForURI同時に使用することの競合でした。

どうやら Tomcat (6) は、GET リクエストを処理するときにlatin1定義されたエンコーディングではなく、グローバルなデフォルト ( ?)を使用します (URIEncoding明らかな理由でエンコーディングがありません)。useBodyEncodingForURI="true"

于 2013-11-13T15:49:53.823 に答える
0

どのようにメッセージを送信しますか? URL の一部である場合は、次のようなエンコードされた URL を送信する必要があります。

param=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94+kkk

안녕하세요 kkkサーバー側に到達します。URL のエンコード/デコードの詳細については、 http://www.url-encode-decode.com/を参照してください。

HTML フォームのデータをサーバーに POST する場合は、ページが UTF-8 として提供されていることを確認してください。応答ヘッダーが

Content-Type    text/html;charset=UTF-8

あなたのページに存在します。

ここでは、Spring のエンコーディング フィルターを使用する必要があります。フィルター マッピングも宣言していることを確認してください。そうしないと、フィルタはサーブレット エンジンで使用されません。

<filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
于 2013-03-26T12:39:15.520 に答える