Hibernate JSF<;h:inputText/>;字符编码问题

Hibernate JSF<;h:inputText/>;字符编码问题,hibernate,jsf,primefaces,utf-8,character-encoding,Hibernate,Jsf,Primefaces,Utf 8,Character Encoding,在这个话题上,我浏览了很多“谷歌”,但没有得到任何帮助。 问题是,我在每个我可以(甚至不能)的地方都设置了UTF-8编码,但从inputText检索的数据仍然被破坏。 我使用JSF、Primefaces和Hibernate。 当我发布到页面时,它从DB正确呈现,在html文档中以纯文本形式编写,甚至作为bean应答 <h:outputText value="text cez OT: čerstvejší"/><br/> text cez IDE: čerstvejší&l

在这个话题上,我浏览了很多“谷歌”,但没有得到任何帮助。 问题是,我在每个我可以(甚至不能)的地方都设置了UTF-8编码,但从inputText检索的数据仍然被破坏。 我使用JSF、Primefaces和Hibernate。 当我发布到页面时,它从DB正确呈现,在html文档中以纯文本形式编写,甚至作为bean应答

<h:outputText value="text cez OT: čerstvejší"/><br/>
text cez IDE: čerstvejší<br/><br/>

<h:outputText value="text cez OT_beans: #{temp.dia}"/><br/>
text cez IDE_beans: #{temp.dia}<br/><br/>

<h:outputText value="text cez OT_DBS: #{temp.getDBS()}"/><br/>
text cez IDE_DBS: #{temp.getDBS()}<br/>
它渲染正确。 只有当我从页面上发布任何“ľťťýýáé”字符时,它才会腐蚀到Ä?和普通的char。 它运行在AppacheTomcat 7.0.34上,由NetBeans使用CDI、JSF 2.2、Primefaces 3.5和Hibernate 3.2.5管理。 UTF-8编码集位置:

  • 每个标头中的meta http equiv=“Content Type”Content=“text/html;charset=utf-8”/>

  • 连接器端口=“8080” 协议=“HTTP/1.1” connectionTimeout=“20000” 重定向端口=“8443” Appache服务器上的URIEncoding=“UTF-8”/>和连接器端口=“8009”协议=“AJP/1.3”重定向端口=“8443”URIEncoding=“UTF-8”/>

  • f:view encoding=“UTF-8”contentType=“text/html”>

  • 我还使用了webFilter,但没有起到任何作用:

    @凌驾 public void doFilter(ServletRequest请求、ServletResponse响应、FilterChain链)抛出IOException、ServletException{ 请求.setCharacterEncoding(编码); 响应。setCharacterEncoding(编码); 链式过滤器(请求、响应); }


  • 有什么帮助吗?其他问题?谢谢大家!`在此处输入代码

    也许数据库中的编码不是UTF-8。您可以检查在数据库上执行showcreatetable时,Tomcat7上的使用CDI需要使用不同编码的
    org.jboss.weld.environment.servlet.Listener
    。解决方案是在weld侦听器之前配置
    org.apache.catalina.filters.SetCharacterEncodingFilter
    org.jboss.weld.servlet.ConversationFilter

    <filter>
        <filter-name>SetCharacterEncoding</filter-name>  
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>ignore</param-name>  
            <param-value>false</param-value>  
        </init-param>
    </filter>
    <filter>
        <filter-name>Conversation</filter-name>  
        <filter-class>org.jboss.weld.servlet.ConversationFilter</filter-class>        
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    <filter-mapping>
        <filter-name>Conversation</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    
    
    SetCharacterEncoding
    org.apache.catalina.filters.SetCharacterEncodingFilter
    编码
    UTF-8
    忽略
    假的
    会话
    org.jboss.weld.servlet.ConversationFilter
    SetCharacterEncoding
    /*  
    会话
    /*  
    
    您在哪里观察损坏的字符?在
    System.out.println()控制台中?或者直接在数据库中使用一些数据库管理工具?或者在提交表单后呈现的HTML输出中?println(setValue),也在DB中,当我尝试保存(Heidi观察到)时,也在inputText中呈现HTML(通过无操作按钮刷新),也在outputText中使用相同的#值。它是UTF-8,因为当我刚从源代码写入时,它会向右,同样获取等于设置:UTF-8。
    
    <filter>
        <filter-name>SetCharacterEncoding</filter-name>  
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>ignore</param-name>  
            <param-value>false</param-value>  
        </init-param>
    </filter>
    <filter>
        <filter-name>Conversation</filter-name>  
        <filter-class>org.jboss.weld.servlet.ConversationFilter</filter-class>        
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    <filter-mapping>
        <filter-name>Conversation</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>