日期:2014-05-18  浏览次数:20814 次

地址栏传递中文字符问题
在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编码.