2016-07-15 37 views
1

私のアプリケーションに問題がありますWebsphere 8.5.5。電子メールを送信するために使用される春休みアプリケーションです。私のサービスでは、私はメールの詳細を受け取り、それを受信者に転送するために春を使用します。それはうまく動作しますが、私はASCII以外の文字でメッセージを送信しようとすると、メッセージは疑問符に置き換えられた特殊文字で到着します。 UTF-8エンコーディングは機能しません。私のPCでアプリケーションはLiberty Profileサーバー上で動作し、最初は動作しません。正常に動作しますが、私は、WebSphere上でアプリケーションを展開するときにそれはdoesnの自由論Websphere 8.5.5 UTF-8エンコーディングの問題

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

私はこの問題をGoogleで検索し、私は春が特殊文字を解釈するためにフィルタを必要見つかったので、私は私のweb.xmlにこの行を追加します。 t。

私が直接、StringコンストラクタでUTF-8でメッセージを翻訳してみました:

new String(byteArray, "UTF-8") 

と同じことが起こります。それは自由に働くが、Websphereにはない。私は私のサーバーと再起動時にパラメータを設定 Character encoding issues on websphere

:この回答で説明

-Dclient.encoding.override=UTF-8 
-Dfile.encoding=UTF-8 

のような: は、私はあなたがこれらのJVM引数を追加することにより、UTF-8を使用するようにWebSphereを強制できることがわかりましたインターネット上にある多くのガイドで説明されているように、 でも明らかに動作しませんでした。

これが実行されたLinuxマシンでlocaleコマンドの出力です:

LANG=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 

I'amは立ち往生し、しようとする他に何かわかりません。

ご協力いただければ幸いです。

答えて

2

にあるencoding.propertiesファイルは、もう1つのエンコード設定が含まれています。デフォルト値(英語)はen=ISO-8859-1です。これをen=UTF-8に更新し、サーバーを再始動してください。

+0

ありがとう、私はファイルを見つけました、あなたは値が 'en = ISO-8859-1'だと言います。問題は今、サーバーでは、さまざまな仮想サーバーでホストされている多くのアプリケーションを実行することです。私のアプリケーションは、彼女のために特別に作成された仮想サーバーで動作します。これは、単一の仮想サーバレベルで 'encoding.properties'を設定する方法ですか?私は変更がサーバー上のすべてのアプリケーションに反映されることを望んでいないからです。 – amicoderozer

+0

@amicoderozer:1)WASの用語のなかで、「仮想サーバー」という用語の意味がわかりません。これを明確にしていただけますか? 2)ISO-8859-1はUnicodeの一部なので、グローバルUTF-8設定は現在のアプリケーションとの互換性の問題はありません。 – Haxiel

+0

申し訳ありませんが、私の欠陥は、アプリケーションサーバーを意味します。私はアプリケーションサーバーレベルで別のencoding.propertiesファイルを設定できるかどうか疑問に思っていました。大丈夫ですか? – amicoderozer