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");读取参数,可是读到中文时出现乱码了
宁静的哈哈哈
10 years, 12 months ago
Answers
这里不能马上说为什么, 但是有几个点可以排查一下:
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