HTTP中文参数尽量用POST方式

POST:
request.setCharacterEncoding("utf-8");
String url = request.getParameter("url");

GET:
request.setCharacterEncoding("utf-8");
String url = request.getParameter("url");
url=new String(url.getBytes("ISO-8859-1"),"UTF-8");


1.在浏览器中发送HTTP请求,输入的中文,浏览器会自动编码: URLEncoder.encode(String,"utf-8");
2.JAVA服务器收到参数后,需要解码: URLDecoder.decode(String,"UTF-8");
这个解码的过程,由tomcat自动完成,所以通常我们使用
request.setCharacterEncoding("utf-8");设置解码方式,tomcat就自动调用
URLDecoder.decode(String,"UTF-8");完成解码.
3.以上方式,当HTTP请求为POST时好时,为GET时乱码。
原因: GET时,TOMCAT默认用ISO-8859-1解码。
这样,我们需要String url = request.getParameter("url");
url=new String(url.getBytes("ISO-8859-1"),"UTF-8");第二次转码。
关于GET方式乱码,可以参考: http://wq-pro.iteye.com/blog/1261444

4.例子:
String data = "http://www.baidu.com/s?tn=baiduhome_pg&ie=utf-8&bs=%E6%AC%A7%E7%B1%B3%E4%BC%BD+%E6%89%8B%E8%A1%A8%E4%BB%B7%E6%A0%BC&f=8&rsv_bp=1&rsv_spt=1&wd=%E6%AC%A7%E7%B1%B3%E4%BC%BD+%E9%81%8B%E5%8B%95%E7%B3%BB%E5%88%97%E6%89%8B%E8%A1%A8%E4%BB%B7%E6%A0%BC&rsv_sug3=1&rsv_sug4";

data = URLEncoder.encode(data);

//将此data作为下一个URL的ref的参数值
String url = "http://localhost:88/trail/trail?action=save&uid=geust1001&siteid=kf_9762&sid=ggg766&url=http%3A//bbs.ntalker.com/thread.php%3Ffid%3D12&ttl=Php%20wind%20%E9%97%AE%E9%A2%98%E5%BF%AB%E9%80%9F%E8%A7%A3%E7%AD%94%20-%20Ntalker%E8%AE%BA%E5%9D%9B%20-%20Powered%20by%20PHPWind&ref=" + data;




总结: URL编码,可以理解为给特殊字符转义;有别与UTF8、GBK转码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值