url中的中文参数如何在Servlet中读取


   
  /**js代码点击对应题目的链接时,自动生成链接的href地址******/
  
function getActionName(){
/**
中间省略N步
**/
/**subject可能包含中文***/
$(qtype).href = "getSelectQuestions.stu?subject="+subject+"&queTypeId="+id ;
}

项目的编码方式utf-8,网页的编码也是utf-8
前置操作request.setCharacterEncoding("utf-8");
现在需要在Servlet中通过request.getParameter("subject");读取参数,可是读到中文时出现乱码了

编码 JSP

宁静的哈哈哈 10 years, 12 months ago

这里不能马上说为什么, 但是有几个点可以排查一下:

1). firebug/chrome 看一下http get请求发给后台的是不是 utf8. 很好认, 中文字符 的utf8 一般都是3个byte, E.开头, 类似这样: id=%E6%89%93%E6%B3%95%E9%80%9F;

2). 有时候tomcat会按默认iso8859-1来处理请求参数. 在servlet中试一下:

   
  String s=request.getParameter("subject");
  
System.out.println(new String(s.getBytes("iso8859-1"), "utf8"));

看是否可以转回来.
如果是这个原因, 你可以在tomcat/conf/server.xml中改一下:

   
  <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF8" />
 

让tomcat默认utf8来解析URL中的请求参数.

DMG夜神月 answered 10 years, 12 months ago

Your Answer