Java 带有俄语用户名的Spring Security UTF-8密码页
我使用存储在mysql数据库中的SS.Users。当我想在JSP页面中为当前登录用户提供用户名时,数据库和列字符集为UTF-8,我写:Java 带有俄语用户名的Spring Security UTF-8密码页,java,jsp,spring-security,Java,Jsp,Spring Security,我使用存储在mysql数据库中的SS.Users。当我想在JSP页面中为当前登录用户提供用户名时,数据库和列字符集为UTF-8,我写: 如果用户名是英文的-好吧,我得到用户名 但如果用户名是用俄语写的,例如“俄罗斯语”,如“俄罗斯语”,我的用户名是用俄罗斯语写的,比如“俄俄罗斯语”,我在页面上得到的,我在页面上得到的,但如果用户名是用俄文写的,比如“俄俄罗斯语”,例如“俄罗斯语”,我在页面上得到的,我在页面上得到的源代码,我在页面上得到的页面源代码,我在页面上获得的源代码“&35355;108
<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>
字符集过滤器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
您的jsp使用什么页面编码
尝试将以下行添加到web.xml:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>utf-8</page-encoding>
</jsp-property-group>
</jsp-config>
*.jsp
utf-8
有几点需要注意,因此可能需要阅读,其中一些取决于服务器
我想你做的UTF-8是对的,现在仍然是:
<form accept-charset="UTF-8">
这也可以通过HTTP头实现
(这表示服务器可以接受字符而不是HTML实体
…;
)身份验证标签默认情况下会转义内容,以降低注入攻击的风险。尝试以下方法:
<security:authentication property="principal.username" htmlEscape="false" />
您使用的是什么版本以及如何呈现名称?SS-3.1.0.RELEASE,我用JSP编写,它不会给出结果(我使用UTF-8浏览器根据需要提供所有信息。但是在页面代码中,我希望看到俄文字母而不是它们的代码。难道浏览器认为它必须为表单字段值返回一个数字实体而不是UTF-8字符吗?所以accept字符集应该通知浏览器只返回UTF-8。