jsp用url传递的参数是乱码,编码没有错,都是utf-8

<li><a class="edit" href="<%=basePath %>admin/product/edit.html?id={field_id}" 
    target="dialog"rel="role"warn="请选择数据"><span>编辑</span>
    </a>
</li>


这个{field_id}是一个uuid,传到后台之后变成了
图片描述

阅读 4.9k
6 个回答

你是怎么设置编码的?
这样?

request.setcharacterencoding("UTF-8");

这个只能为POST请求设置编码,GET请求不会受影响的。

想处理get请求,

  • 要么请求里直接使用URL编码

    <%=basePath %>admin/product/edit.html?id=<%=java.net.URLDecoder.decode(field_id,"utf-8")%>

  • 要么在接收到请求后处理

    String str = new String(param.getBytes("iso-8859-1"),"UTF-8")

  • 当然,还有一个多数人不推荐的方法,直接改服务器的默认编码

 <!-- tomcat server.xml -->
 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 
           redirectPort="8443" URIEncoding="UTF-8" >

全局的过滤器设置好应该没啥问题,有些提交的地方该 POST 的该 GET 的要分清,好像你这里是链接过去没啥问题。

接收的时候转一下试试?

String id = new String(request.getParameter("id").getBytes("iso-8859-1"), "UTF-8");

乱码不用多想,肯定是编码问题,建议debug追踪一下

开浏览器开发工具 那个请求抓图发上来看

在@堕天使008的基础上加一些内容。
现在基本处理乱码问题都是在web.xml配一个过滤器,全部转为utf-8。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题