地址栏传递中文字符问题
在a.jsp页面中通过
<a href= "b.jsp?schoolname=北京大学> 北京大学 </a>
连接到b.jsp
在b.jsp中通过 <%=request.getParameter( "schoolname "));%> 得到是乱码。
请问我该如何解决。
------解决方案-------------------- 在b.jsp中这样取
<%String schoolname=null;
schoolname=new String(request.getParameter( "schoolname ").getBytes( "ISO-8859-1 "));%>
------解决方案-------------------- public static String GBToUnicode(String strIn) {
String strOut = null;
if (strIn == null || (strIn.trim()).equals( " "))
return strIn;
try {
byte[] b = strIn.getBytes( "ISO8859_1 ");
strOut = new String(b, "GBK ");
} catch (Exception e) {
}
return strOut;
}
------解决方案--------------------对汉字进行编码...
------解决方案--------------------问乱码的问题的人太多了
如果用get 提交
在tomcat的server.xml中,加入URIEncoding= "GBK "
如果用post的话,
就要用 <% request.setCharacterEncoding( "GBK "); %>
如果上面的方式都没有用
这样也可以 new String(request.getParameter( "username ").getBytes( "ISO_8859_1 "), "GBK ");就都可以解决了,因为tomcat内部是ISO_8859_1,
还有就是用过滤器,在web.xml中设置
-------------注意这种方式我没试,copy别人的--------------------
1.web.xml
<filter>
<filter-name> enfilter </filter-name>
<filter-class> filter.Enfilter </filter-class>
</filter>
<filter-mapping>
<filter-name> enfilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
2.filter.filter
package filter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class Enfilter implements Filter {
public void init(FilterConfig cong) {
//do nothing
}
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) {
try{
srequest.setCharacterEncoding( "GBK ");
chain.doFilter(srequest, sresponse);
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
//do nothing
}
}
自己想想吧
------解决方案--------------------建议用楼上第3种方式,过滤器方便管理
------解决方案--------------------URL编码.