2012-04-15 13 views
2

UTF-8で問題があります。Spring 3 MVCアプリケーションでのUTF-8サポート

common.jsp

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

typical.jsp

<%@ include file="common.jsp" %> 

ページ頭

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

フォーム

<form id="screenObject" accept-charset="UTF-8" action="/SiteAdmin/articleHeaderEdit?articleId=15" method="post"> 

私がテキストフィールドに非latin1の文字を入力し、[保存]をクリックします。バリデーターは別のフィールドについて不満を述べ、提出を停止します。これは決してデータベースに到達しないので、UTF-8を処理するデータベース機能はこの画像にはありません。ページは適切なエラーで再表示されますが、入力されたテキストはすべて乱されます。すべての非latin1文字は何かばかげたものに変換されます。

私は私のビューリゾルバにこれを追加する

試み

が助けにはならなかった...重要の場合には、春の3 MVCを使用しています:

<property name="contentType" value="text/html;charset=UTF-8" /> 

ソリューション

web.xmlにエンコードフィルタを追加します。データで

<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> 

<filter-mapping> 
<filter-name>encodingFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

データベースを使用する場合は、データベース接続のエンコーディングが正しく設定されているかどうかを確認してください。 – Raptor

答えて

5

どこかは、あなたがバイトとして文字列をエンコードまたは文字列としてバイトストリームをデコードするためのいずれかにUTF-8以外のものを使用している流れ。これは、通常、デフォルトの文字エンコーディングを使用するAPI呼び出しを使用する場合に発生します。あなたのコードを知らなければ、それだけで私たちはあなたに伝えることができます。

また、Springの文字エンコーディングの問題についてはthis linkを参照するか、多くの他の投稿については[spring] character encodingのフォーラムを検索してください。

+0

web.xmlにencodingFilterを追加した後、Tomcatを起動できません。警告:[SetPropertiesRule] {Server/Service/Engine/Host/Context}プロパティ 'source'を 'org.eclipse.jst.jee.server:SiteAdmin'に設定すると、一致するプロパティが見つかりませんでした。 INFO:サーブレットエンジンの起動:Apache Tomcat/7.0.12 java.lang.NullPointerException – jacekn

+0

EclipseでファイルをUTF-8エンコーディングで保存する必要はありますか? – jacekn

+0

エンコーディングフィルタを追加すると、私の投稿に記載されている問題が修正されます。しかし、あなたの応答のリンクが誤った 'filter-class'の例を指しているので、注意する必要があります。そのコードをコピー&ペーストすると、すぐにはわからない問題が発生します。 – jacekn

関連する問題