2016-12-27 8 views
0

私はこのような定義された文字セットと.jspという意見のカップルを持っている:そこ要素でSpring MVCの疑問符は、私のSpring MVCのプロジェクトで

<%@ page language="java" contentType="text/html; charset=windows-1250" 
pageEncoding="windows-1250" session="true" %> 

<meta charset="windows-1250"> 

私は実現とデバッグのためにtomcat 8でEclipseを使用しています。私はいくつかのポーランドの手紙を渡すと

System.out.println("Default Charset=" + Charset.defaultCharset()); 
System.out.println("file.encoding=" + System.getProperty("file.encoding")); 
System.out.println("Default Charset=" + Charset.defaultCharset()); 
System.out.println("Default Charset in Use=" + getDefaultCharSet()); 

<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>WINDOWS-1250</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

は私のコントローラクラスでは(適切なRequestMapperに)私はいくつかの文字セットを印刷しています:web.xmlに私はこのような定義されたエンコーディングフィルタを持っています.jspビュー(passedby ModelAtribute)。たとえば、コントローラのabcdeęść(結果としてデータベース内)に印刷された値はです。abcde ???。上記のSystem.out.printlnsの出力は次のとおりです。

Default Charset=windows-1250 
file.encoding=windows-1250 
Default Charset=windows-1250 
Default Charset in Use=Cp1250 

これらのポーランド語の文字に問題はありますか?私はすべてのエンコードを変更した場合

をabcdeÄÅÄ

EDIT:UTF-8定義

Default Charset=UTF-8 
file.encoding=UTF-8 
Default Charset=UTF-8 
Default Charset in Use=UTF8 

ストリングabcdeąśćは次のように印刷されると

編集 同じ出力UTF-8の問題は同じです。しかし、私は気づく: 私は最初にISO-8859-1からテキストをデコードして、UTF-8のプリントにそれをエンコードした値を保存する場合は、OKです:

私はそれらを持っているすべての.jspファイルで
byte ptext[] = email.getBytes(Charset.forName("ISO-8859-1")); 
String value = new String(ptext, Charset.forName("UTF-8")); 
System.out.println("Value email: " + value); 

UTF-8文字セットを含む行、ファイルはUTF-8、Javaクラスのいずれかでエンコードされ、何らかの形で.jsp形式の値はISO-8859-1になります。そんなことがあるものか ?

+0

「iso-8859-1」または「UTF8」を試しましたか? –

+0

UTF-8の問題はほぼ同じです。私は上の質問のいくつかの詳細を追加しました。 – clsbartek

答えて

0

私がテストしたと私は

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

もheadタグ内の

<meta charset="utf-8"> 

、私のエンコーディングフィルタ構成

CharacterEncodingFilter filter = new CharacterEncodingFilter(); 
filter.setEncoding("UTF-8"); 
filter.setForceEncoding(true); 
http.addFilterBefore(filter, CsrfFilter.class); 
http.csrf().disable(); 
..ポリッシュ文字列は次のような構成で正しく表示されていることを見ました

だから、もしあなたがすべてを変えれば、あなたは大丈夫だろうと思います。また、私の設定はxmlにはありませんが、エンコーディング文字列の部分を除いて見ることができます。

Eclipse内のJavaの埋め込みエンコードは、UTF-8です。

+0

私はあなたが上で説明したことをやったが、うまくいかない。しかし、私はいくつかの進歩をしました。 最初にISO-8859-1のテキストをデコードし、UTF-8にエンコードして保存した値がOKの場合: バイトptext [] = email.getBytes(Charset.forName( "ISO-8859-1" )); 文字列値=新しい文字列(ptext、Charset.forName( "UTF-8")); System.out.println( "値の電子メール:" +値); – clsbartek

+0

すべての.jspファイルに、UTF-8文字セットの行があります。ファイルはUTF-8で、Javaクラスでも、何らかの形で.jsp形式の値がISO-8859-1にあります。そんなことがあるものか ? – clsbartek

関連する問題