2017-05-02 115 views
0

當我將我的index.xhtml輸入字段中的數據寫入數據庫時​​,我得到了?而不是ąčę。我已將數據庫歸類設置爲utf8_general_ci。我打印出我的價值和在Tomcat 8輸出我已經看到了?所以我猜這是tomcats的問題。我已經檢查了很多指南和其他stackoverflow問題/解決方案,沒有任何幫助。這是我做了什麼:在雄貓server.xml中我有:netbeans 8.1上的Tomcat 8 utf-8配置無法正常工作

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8084" protocol="HTTP/1.1" redirectPort="8443"/> 

在雄貓web.xml中我註釋掉

<filter> 
     <filter-name>setCharacterEncodingFilter</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> 
     <async-supported>true</async-supported> 
    </filter> 

<filter-mapping> 
     <filter-name>setCharacterEncodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

在NetBeans項目web.xml我有

<filter> 
     <filter-name>setCharacterEncodingFilter</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>  
    </filter> 
    <filter-mapping> 
     <filter-name>setCharacterEncodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>faces/index.xhtml</welcome-file> 
    </welcome-file-list> 
<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 

這是我的過濾器setCharacterEncodingFilter.javaindex.xtml

package Servlets; 

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 


public class setCharacterEncodingFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) 
      throws ServletException { 

    } 

    @Override 
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
      throws IOException, ServletException { 
     servletRequest.setCharacterEncoding("UTF-8"); 
     servletResponse.setContentType("text/html; charset=UTF-8"); 
     filterChain.doFilter(servletRequest, servletResponse); 
    } 

    @Override 
    public void destroy() { 

    } 
} 

我把所有的代碼覆蓋

<f:view contentType="text/html" encoding="UTF-8"> 
<h:head> 
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> 
</h:head> 
    *code* 
</f:view> 

這是我所能做的閱讀完所有的問題後,解決問題和指導,我做錯了什麼?

+0

什麼有關,將數據輸入數據庫的代碼? – getjackx

+0

在管理器中,我有堅持使用JSF託管bean創建的方法,只需添加方法{persist(m);},然後在bean中調用管理器來添加我的值,如Thing m = new Thing(); m.setValue(值1); ThingManager tm = new ThingManager(); tm.addThing(米);沒有設置utf-8的跡象。如果我必須在創建的每個bean中設置utf-8,那麼這將會很糟糕。我想我所有的項目都是utf-8而不只是一個領域。 – Immortal

+0

我只是猜測,但你可能需要像Java編碼(「UTF-8」)編碼(myString) ''再次編碼你的值。看[這個問題](http://stackoverflow.com/questions/5729806/encode-string-to-utf-8)。 – getjackx

回答

0

我得到了答案。 我編輯 - & useEncoding =真&的characterEncoding = UTF-8

<property name="javax.persistence.jdbc.url" value="jdbc:mysql:url?zeroDateTimeBehavior=convertToNull&amp;useEncoding=true&amp;characterEncoding=UTF-8"/> 

,並得到了固定

相關問題