0

Spring MVCアプリを開発していますが、エンコードに問題があります。

問題は次のとおりです。ブラウザで「João」と入力し、フォームを送信した後、コントローラで「João」を取得します。私のFirefoxはUTF-8に設定されているので、Eclispeに設定されています。Firebugを使用して送信されたパラメーターを確認しても、値は正しいままです。

これが私のエンコーディング設定です:

web.xmlで、私が最初に持っているもの:

<filter>
    <filter-name>encoding-filter</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>

<locale-encoding-mapping-list>
    <locale-encoding-mapping>
        <locale>pt-BR</locale>
        <encoding>UTF-8</encoding>
    </locale-encoding-mapping>
    <locale-encoding-mapping>
        <locale>pt</locale>
        <encoding>UTF-8</encoding>
    </locale-encoding-mapping>
    <locale-encoding-mapping>
        <locale>en</locale>
        <encoding>UTF-8</encoding>
    </locale-encoding-mapping>
</locale-encoding-mapping-list>

<filter-mapping>
    <filter-name>encoding-filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

JSPの場合:

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

フォーム上:

<form:form method="post" ... acceptCharset="UTF-8">

servelt-context.xml:

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
    <beans:property name="contentType" value="text/html;charset=UTF-8" />
</beans:bean>

私のpom.xml(Maven)の内部:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.6</java-version>
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.1</org.slf4j-version>
</properties>

サーバーを呼び出すために、次のようなJQuery load()関数を使用しています。

var params = form.serialize();
$.ajaxSetup({
    contentType: 'text/html; charset=UTF-8'
});
$("#content").load(url, params);

必死に試みたので、この$ .ajaxSetupを含めましたが、効果はありません。

パラメータで、この「João」が「Jo%C3%83%C2%A3o であることに気付きました。Firebugを使用して「João」に戻しましたが、それでも同じ問題が発生します。

編集:私のapache-tomcat-7.0.27 \ conf \server.xmlにもURIEncoding="UTF-8"が含まれています:

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

魔法のアイデアはありますか?

前もって感謝します。

4

2 に答える 2

0

maven tomcanプラグイン(mvn clean tomcat:run)を介してアプリケーションを実行していますが、Tomcat構成ファイルを無視します。したがって、次のように、pom.xmlにuriEncodingを含めました。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
    <version>1.1</version>
    <configuration>
        <uriEncoding>${project.build.sourceEncoding}</uriEncoding>
    </configuration>
</plugin>

次に、私のプロパティは、エンコードをUTF-8に設定するトリックを完了しました。

<properties>
...
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.6</java-version>
...
</properties>
于 2012-07-05T19:41:39.243 に答える
0

これは役に立ちますか(同じ問題がありました):

https://stackoverflow.com/a/6644019/169277

さらに、例:私が使用しているメソッドのエンコードに問題はありません:

@RequestMapping(value = "/test")
    public ResponseEntity<String> test(Locale loc, String code, HttpServletResponse response) {
        //enforce right encoding
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.add("Content-Type", "text/html; charset=utf-8");

        return new ResponseEntity<String>("João"), responseHeaders, HttpStatus.CREATED);
    }

変数または値をstdoutに出力して、春の問題ではないことを確認してください。また、ファイルエンコーディング(日食のJavaファイル)を確認し、右クリック->プロパティ->テキストファイルエンコーディング(下部)。に設定しUTF-8ます。お役に立てば幸い

于 2012-07-05T20:03:49.600 に答える