2013-03-26 124 views
1

我們正在使用多種語言,而韓語是其中之一,在我們的應用程序中,我們已經在tomcat級別設置了編碼,並且還爲編碼設置了彈簧過濾器,但由於某些原因,在我們只收到的Struts2操作類中有一個request.getParameter ??。URIEncoding不能在Tomcat 6.0.26上工作

Tomcat的編碼

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

彈簧過濾器

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

EDIT

所以被接收作爲其被稱爲 「안녕하세요KKK」 發送的消息「???? ?kkk「

我可能會錯過什麼?

問候,

AYUSH

回答

0

你如何把你的信息呢?如果它的URL的一部分,那麼你就必須發送類似

param=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94+kkk 

編碼的URL在服務器端得到안녕하세요 kkk。有關URL編碼/解碼的更多信息,請參閱http://www.url-encode-decode.com/

如果將HTML表單中的數據發佈到服務器上,而不是確保將頁面作爲UTF-8提供。您可以檢查這是否響應標頭

Content-Type text/html;charset=UTF-8 

存在於您的頁面。

Spring的編碼過濾器應該這樣做。只要確保你聲明瞭一個過濾器映射。否則,過濾器將不會被servlet引擎使用:

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

我知道這是奇數,但是我刪除的URIEncoding =「UTF-8」從我的Tomcat和人物似乎會好起來的。無法理解這將如何發生。 – 2013-04-16 16:04:51

+0

我們將它作爲POST發送..移除URIEncoding將導致所有GET無法編碼 – 2013-04-16 16:09:50

+0

您是否嘗試添加過濾器映射? – 2013-04-16 18:58:49

1

如果你的標籤在屬性文件中,試圖迫使UTF8文件編碼(檢查tomcat的啓動腳本):

  1. 在Windows
    組JAVA_OPTS =%JAVA_OPTS%-Dfile.encoding = UTF8

  2. 在Linux
    出口JAVA_OPTS =「$ JAVA_OPTS -Dfile.encoding = UTF8

我希望這能幫助:)

1

我們只是有一個問題simliar與被誤解GET請求。

原因是在同一時間衝突使用URIEncodinguseBodyEncodingForURI

顯然Tomcat(6)使用全局默認值(latin1?),而不是在URIEncoding定義的編碼處理GET請求時(這對於明顯的原因沒有編碼)如果useBodyEncodingForURI="true"