我已经创建了一个带有netbeans 7.0和tomcat 7.0的JSP项目,没有任何问题。
当我将它导出到WAR并将其部署到我的Tomcat服务器时,此行不起作用:
<% if (request.getParameter("submit").contains("اضافه")) { ...
但这些有效:
<% if (request.getParameter("emplist") != null) { ...
这个问题是如何引起的?如何解决?
答案 0 :(得分:5)
在TOMCAT_HOME/conf/web.xml
中,您可以添加过滤器以启用字符编码为UTF-8
添加以下内容:
<filter>
<filter-name>setCharacterFilter</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-mapping>
<filter-name>setCharacterFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
如果要将URL编码为包含UTF-8,则必须向Tomcat连接器添加URIEncoding="UTF-8"
。
找到您的HTTP连接器(在TOMCAT_HOME/conf/server.xml
中,通常您可以找到已分配的端口8080
)并按上述方式添加属性URIEncoding
,如下所示:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
我希望这会有所帮助。
答案 1 :(得分:0)
您的部署tomcat版本是否与开发版本相同?
这可能与请求编码问题有关。你应该通过调用HttpServletRequest对象的setCharacterEncoding或在你的表单中设置utf8 charset来将编码设置为UTF-8。
答案 2 :(得分:0)
喜欢以下。您还可以创建自定义过滤器类以将请求的编码设置为UTF-8
public class UnicodeFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, res);
}
public void init(FilterConfig config) throws ServletException {
//Get init parameter
}
public void destroy() {
//add code to release any resource
}
}