我在IE里输入http://localhost:8888/ecip/pages/communicate.html?outuser=1&name=2&namecn=我我我
byte[] sModule = getRequest().getParameter("namecn").getBytes("ISO8859-1");
searchModule = new String(sModule);为什么打印得到的数据是 ???, 这个怎么处理的?
byte[] sModule = getRequest().getParameter("namecn").getBytes("ISO8859-1");
searchModule = new String(sModule);为什么打印得到的数据是 ???, 这个怎么处理的?
试一试。
因为有中文,加上这个。request.setCharacterEncoding("gbk")
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="400" maxSpareThreads="500"
enableLookups="false" redirectPort="8443" acceptCount="500"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK'/>
在tomacat的conf/server.xml中Connector后面添加URIEncoding='GBK'
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.iwit.noteService.util.SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
对应的包添加下面的部分:
package com.iwit.noteService.util;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;
import javax.servlet.UnavailableException;public class SetCharacterEncodingFilter implements Filter
{
public void init(FilterConfig filterConfig) throws ServletException{}
public void destroy(){} public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
{ request.setCharacterEncoding("GBK"); //传递控制到下一个过滤器
chain.doFilter(request,response);
}
}
如果是用tomcat的话,试下4楼的方法。
用过滤器好像不起作用。
request.setCharacterEncoding("GBK");
request.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("gb2312");
Tomcat 的 GET 方式编码的设置,解决中文文件名URL的问题2 如果还是不行,你可以考虑给汉字做编码了,也就是不要让汉字直接出现在URL里面,而是变成 %B8%5A类似的方式,比如你去baidu 搜索汉字,就会看到这个的。汉字已经变成了这种格式
URLEncoder.encode();这个方法就是用来给汉字的URL进行编码的。
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="400" maxSpareThreads="500"
enableLookups="false" redirectPort="8443" acceptCount="500"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='UTF-8'/>
再将页面的值应该这样写:
String str = getRequest().getParameter("namecn")
searchModule = new String(str.getBytes("iso-8859-1"),"utf-8");
或者request.setCharacterEncoding("GBK");
都可以试试