0

リクエストヘッダーからファイル名を取得しようとしていますが、web.xmlでSpringエンコーディングフィルターを定義しているにもかかわらず、文字エンコードの問題が発生しています。

String fileName = request.getHeader("X-File-Name"); // wrong encoding

web.xml

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

またURIEncoding="UTF-8"、Tomcatserver.xmlファイルに構成を追加しました。また、同じ構成JAVA_OPTSも追加しました。

-DuriEncoding=UTF-8 -Dfile.encoding=UTF-8
4

2 に答える 2

1

ヘッダーが常にUTF-8(またはそれ以外の場合はASCII)である場合は、次のように実行できます。

public static String reEncode( String input ) {
    Charset w1252 = Charset.forName("Windows-1252"); //Superset of ISO-8859-1
    Charset utf8 = Charset.forName("UTF-8");
    return new String(input.getBytes(w1252), utf8 );
}

...

String fileName = reEncode("Mekanizması.pdf"); //request.getHeader("X-File-Name")
System.out.println(fileName); //Mekanizması.pdf
于 2012-12-11T23:00:01.523 に答える
0

HTTPヘッダーに定義されたエンコーディングはありません。それらが最大でISO-8859-1をサポートすることを期待してください。US-ASCIIに依存する方がよいでしょう。paramは、その名前が示すように、URIとそのparams用です。他には何もありません。

于 2012-12-11T19:58:10.297 に答える