<a href="http://192.168.1.163/ProductList.do?pageSize=40&Keywords=马可波罗&OrderBy=sellcount0-string&IsAsc=false&page=1">40</a>点击进入后台后,Keywords参数接收的乱码,String strKeyword = request.getParameter("Keywords");strKeyword乱码的值是:Âí¿É²¨ÂÞ这个该怎么处理?
调试欢乐多
把Keywords参数在前台用JS编码一下encodeURI!
a标签的href改为:href="javascript: functionName()"
JS代码:
function functionName(){
var d = "马可波罗";
var url = "http://192.168.1.163/ProductList.do?pageSize=40&Keywords="+encodeURI(d)+"&OrderBy=sellcount0-string&IsAsc=false&page=1";
window.location.href = url ;
}后台:
//后台action或者servlet这样转码获取
String Name=new String(URLDecoder.decode(request.getParameter("name"),"utf-8"));[/color]
改为:request.getParameter("Keywords")
LZ祝你好运!
这个方法很好
只有在极其特殊的情况下不会成功
我也遇到过这样的问题 我是点击下一页的时候需要传中文 行不通 我就换了这个方法:
<form id="form" action="ArticleServlet?action=SearchNews&page=${page}" method="post">
<input name="key" id="key" type="hidden" value="马可波罗" />
<div id="MianBtNr" >
<a href="javascript:document:form.action='ArticleServlet?action=SearchNews';form.submit();"><img src=../images/page_top.gif border=0 align=absmiddle></a>
<c:if test="${page>1}">
<a href="javascript:document:form.action='ArticleServlet?action=SearchNews&page=${page-1}';form.submit();"><img src=../images/page_pv.gif border=0 align=absmiddle /></a>
</c:if>
<c:if test="${page<allpage}">
<a href="javascript:document:form.action='ArticleServlet?action=SearchNews&page=${page+1}';form.submit();" ><img src=../images/page_next.gif border=0 align=absmiddle></a>
</c:if>
<a href="javascript:document:form.action='ArticleServlet?action=SearchNews&page=${allpage}';form.submit();"><img src=../images/page_end.gif border=0 align=absmiddle></a>
共${allpage}页 当前第${page}页
</div>
</form>
还是不行,
按照你的那个 后台
String strKeyword = request.getParameter("Keywords");
收到的是 马å¯æ³¢ç½
String Name=new String(URLDecoder.decode(request.getParameter("Keywords"),"utf-8"));
这个收到的是!
马å¯æ³¢ç½怎么回事,唉。。
还是不行,
按照你的那个 后台
String strKeyword = request.getParameter("Keywords");
收到的是 马å¯æ³¢ç½
String Name=new String(URLDecoder.decode(request.getParameter("Keywords"),"utf-8"));
这个收到的是!
马å¯æ³¢ç½怎么回事,唉。。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
因为超链接提交是get方式提交,用一般的过滤器也没用,通过配置应用服务器的配置文件,告诉它传递参数的时候用utf-8编码即可。
如果想不修改服务器的配置文件,那么可以通过后台代码重新编码然后解码进行转换:
String Name=new String(request.getParameter("Keywords").getBytes(),"utf-8"));
如果你form用的是post提交,
那么先设置下request.setCharacterEncode('gbk');
如果是get提交,
那么在server.xml文件里面,
<Connector port="8080"....(最后面添加)URIEncoding="gbk" />
编码字符你自己看是设置utf-8还是gbk
http://download.csdn.net/detail/lin5ting/4855766
解决乱码问题的,重jsp和数据库和浏览器之间的都解决了。你的我看就去改servlet.xml的配置把,URIEncoding="UTF-8"。就像14写的那样
<%@ page contentType="text/html; charset=GBK" %>
后台获得之前加编码处理:
request.setCharacterCode("GBK");