我在这个主题上通过了许多“谷歌”,但没有任何帮助。
问题是,我在每个可以拥有(甚至不能拥有)的地方都设置了 UTF-8 编码,但是从 inputText 检索的数据仍然损坏。
我使用 JSF、Primefaces 和 Hibernate。
当我发布到页面时,它会从 DB 正确呈现,在 html doc 中写为纯文本,甚至是 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/>
另外,当我将变量的 setter 设置为此:
public String getName() {
return "načítané z aplikácie";
}
它正确呈现。
只有当我从页面发布任何“ľščťžýáíé”字符时,它才会损坏为Ä?和常见的字符。
它在 NetBeans 管理的 Appache Tomcat 7.0.34 上运行,带有 CDI、JSF 2.2、Primefaces 3.5、Hibernate 3.2.5。
UTF-8 编码集的地方:
协议(protocol)="HTTP/1.1"
连接超时="20000"
重定向端口="8443"
URIEncoding="UTF-8"/> 和连接器 port="8009"protocol="AJP/1.3"redirectPort="8443"URIEncoding="UTF-8"/> 在 Appache 服务器上
@覆盖
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(编码);
response.setCharacterEncoding(编码);
链.doFilter(请求,响应);
}
有什么帮助吗?其他问题?谢谢!`在此处输入代码
最佳答案
问题是,在 Tomcat 7 上使用 CDI 需要 org.jboss.weld.environment.servlet.Listener
它使用不同的编码(我认为)。解决方法是配置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>
关于hibernate - JSF <h :inputText/> character encoding issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908447/