簡體   English   中英

spring mvc路徑變量編碼

[英]spring mvc path variables encoding

我正在使用spring mvc。 我正在沖浪:

http://localhost:8080/services/cities/פת.html

注意פתפת而不是英語。
我的控制器是:

@RequestMapping(value="/services/cities/{name}", method=RequestMethod.GET)
public @ResponseBody List<SelectElement> getCities(@PathVariable String name) {
    List<SelectElement> elements=null;
    ...
    ...
    return elements;
}

問題是控制器接收פת而不是正確的字符。
我該如何解決?

即使我沖浪到: http://localhost:8080/services/cities/%D7%A4%D7%AA.html我遇到了這個問題。

如果您使用的是tomcat,則必須通過在Tomcat server.xml配置中的<Connector>上添加URIEncoding="UTF-8"來指定請求的URL編碼,如下所述:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

在這里,您有一個關於在Tomcat中編碼請求的有趣文檔

像CharacterEncodingFilter這樣的東西只能在POST請求中使用。 您需要更改Tomcat(或其他容器)配置才能使用不同於ISO-8859-1的URI。 但這不適用於所有瀏覽器,它取決於它們對URI的編碼方式。

所以我的建議總是使用最簡單的字符。 如果你告訴我們你想要實現什么,我們可以找到更好的解決方案(我想你不需要用戶也直接在地址欄中輸入城市名稱)。

使用CharacterEncodingFilter過濾器...

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

暫無
暫無

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

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