1

こんにちはスタックオーバーフラワーです。

助けが必要な問題があります:

スマートフォン アプリから Java/Spring MVC アプリケーションへの http GET Web サービス呼び出しを行っています。mod_proxy プロキシが設定された Apache サーバーが前面にある Tomcat アプリケーション サーバーを使用しています。

URL に埋め込まれているパラメータの 1 つに「Männen」という単語があります。これは、パラメータの 1 つである組織名です。アプリは Jquery Ajax GET リクエストを作成し、パラメーターはアプリを「M%E4nnen」のままにします。これは、私の理解では、「ä」が適切に URL エンコードされていることを意味します。スプリングコントローラーに届くと「まんねん」に歪んでいます。

私はググって、これに関するかなりの数のスレッドを見つけました。それらはすべて、すべてのコネクタに URIEncoding="UTF-8" を追加して、Tomcat server.xml ファイルを変更することを推奨しています。もちろん、私はこれを試しました。変更しましたが、問題は解決しませんでした。文字列は "M�nnen" として表示されます。Apache プロキシ設定の ProxyPass パラメータに「nocanon」を追加することを提案するスレッドもありました。これは試してみましたが、違いはありませんでした。

ログを使用して、リクエストを追跡できます。

  1. Apache アクセス ログでは、パラメータは「M%E4nnen」として記録されます。
  2. Apache プロキシ ログでは、パラメータは「M%E4nnen」として記録されます。
  3. Tomcat localhost_access ログでは、パラメーターは「M%E4nnen」として記録されます。
  4. リクエストを受信したSpringコントローラーでは、パラメーターは「M�nnen」としてログに記録されます

私のSpringアプリケーションにも文字エンコーディングフィルターがありますが、私が理解している限り、リクエストボディでのみ機能します。以下に示すように構成されています。

<filter>
  <filter-name>CharacterEncodingFilter</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>
<filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

他に何を試すべきか、他にどこを見ればよいか本当にわかりません。誰かが私を正しい方向に導くことができれば、それは大歓迎です.

4

1 に答える 1