Hibernate JSF<;h:inputText/>;字符编码问题
在这个话题上,我浏览了很多“谷歌”,但没有得到任何帮助。 问题是,我在每个我可以(甚至不能)的地方都设置了UTF-8编码,但从inputText检索的数据仍然被破坏。 我使用JSF、Primefaces和Hibernate。 当我发布到页面时,它从DB正确呈现,在html文档中以纯文本形式编写,甚至作为bean应答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
<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编码集位置:
有什么帮助吗?其他问题?谢谢大家!`在此处输入代码也许数据库中的编码不是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>