簡體   English   中英

Spring MVC 3.1 - 請求標頭字符編碼問題[UTF-8]

[英]Spring MVC 3.1 - Request Header Character Encoding issue [UTF-8]

我正在嘗試從請求標頭中獲取文件名,盡管我在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"配置添加到Tomcat server.xml文件中。 並添加了相同的配置JAVA_OPTS。

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

好吧,如果標題始終是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

沒有為HTTP標頭定義編碼。 期望他們最多支持ISO-8859-1。 更好地依賴US-ASCII。 正如名稱所說,param是URI及其參數。 沒有其他的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM