Java 带有俄语用户名的Spring Security UTF-8密码页

Java 带有俄语用户名的Spring Security UTF-8密码页,java,jsp,spring-security,Java,Jsp,Spring Security,我使用存储在mysql数据库中的SS.Users。当我想在JSP页面中为当前登录用户提供用户名时,数据库和列字符集为UTF-8,我写: 如果用户名是英文的-好吧,我得到用户名 但如果用户名是用俄语写的,例如“俄罗斯语”,如“俄罗斯语”,我的用户名是用俄罗斯语写的,比如“俄俄罗斯语”,我在页面上得到的,我在页面上得到的,但如果用户名是用俄文写的,比如“俄俄罗斯语”,例如“俄罗斯语”,我在页面上得到的,我在页面上得到的源代码,我在页面上得到的页面源代码,我在页面上获得的源代码“&35355;108

我使用存储在mysql数据库中的SS.Users。当我想在JSP页面中为当前登录用户提供用户名时,数据库和列字符集为UTF-8,我写:

如果用户名是英文的-好吧,我得到用户名

但如果用户名是用俄语写的,例如“俄罗斯语”,如“俄罗斯语”,我的用户名是用俄罗斯语写的,比如“俄俄罗斯语”,我在页面上得到的,我在页面上得到的,但如果用户名是用俄文写的,比如“俄俄罗斯语”,例如“俄罗斯语”,我在页面上得到的,我在页面上得到的源代码,我在页面上得到的页面源代码,我在页面上获得的源代码“&35355;1085;1085;&;1085;以及以及以及355;1086;1086;1086;&;1086;1086;以及以及1086;以及以及以及以及;1086;1086;;以及以及以及以及以及以及以及以及以及以及以及以及;1086;1086;1086;以及以及以及;以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及其他其他6;1086;;;1090;&1077;&1083;&1100;”

如何修复它? 谢谢你的回答

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

字符集过滤器
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。