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.java在index.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>
這是我所能做的閱讀完所有的問題後,解決問題和指導,我做錯了什麼?
什麼有關,將數據輸入數據庫的代碼? – getjackx
在管理器中,我有堅持使用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
我只是猜測,但你可能需要像Java編碼(「UTF-8」)編碼(myString) ''再次編碼你的值。看[這個問題](http://stackoverflow.com/questions/5729806/encode-string-to-utf-8)。 – getjackx