2012-03-19 55 views
0

我使用存儲在mysql數據庫中的SS.Users。數據庫和列字符集是UTF-8,當我想放棄的用戶名在JSP頁面當前登錄用戶我寫:春季安全用俄語用戶名的UTF-8 codpage

<安全:認證屬性=「principal.username」 />

如果英語的用戶名 - 所有好吧,我得到它的用戶名

但如果用戶名在俄語writen,例如 「новый_пользователь」,我得到了網頁源代碼「&#1085; &#1086; &#1074; &#1099; &#1081 ; &#95; &#1087; &#1086; &#1083; &#1100; &#1079; &#1086; &#1074; &#1072; &#1090; &#1077; &#1083; ?&#1100;」

如何解決它 謝謝你的答案

在我的web.xml我有過濾器:

<filter> 
    <filter-name>charsetFilter</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> 
+0

你使用的是什麼版本,你如何渲染這個名字? – 2012-03-19 15:23:30

+0

SS - 3.1.0.RELEASE,我在JSP中寫入 RRom 2012-03-19 15:26:25

回答

1

認證標籤默認情況下,逃逸的內容,以減少注入攻擊的風險。試一下:

<security:authentication property="principal.username" htmlEscape="false" /> 
+0

謝謝,它的工作很好! – RRom 2012-03-20 08:23:45

+0

很棒:)謝謝! – siebmanb 2015-10-22 09:21:25

1

什麼編碼你的JSP頁面使用

嘗試下面的行添加到您的的web.xml

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>utf-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 
+0

它不給結果(我使用UTF-8 – RRom 2012-03-19 15:52:58

0

有幾點需要注意,所以也許讀Character Conversions from Browser to Database,其中一些服務器依賴。

我假設你沒有UTF-8的權利,仍然是:

<form accept-charset="UTF-8"> 

哪些應該通過HTTP頭Accept-Charset: UTF-8也成爲可能。

(這表示該服務器可以接受字符,而不是HTML實體& # ... ;

+0

瀏覽器根據需要提供了一切,但在頁面代碼,我想看到俄文字母,而不是他們的代碼 – RRom 2012-03-19 16:03:00

+0

是不是這樣,瀏覽器認爲它必須返回一個表單字段值數字實體而不是UTF-8字符?因此,接受字符集應通知瀏覽器只需簡單地返回UTF-8。 – 2012-03-19 22:43:20