URLEncoder.encode 使用心得
1、解决接口GET请求中:参数包含中文问题?
通过URLEncoder.encode 可以解决。我此次使用的utf-8编码,所以对中文进行urlencode 编码 而在服务器短 使用的tomcat 是不需要进行解码的;
同时,若是web容器也是不需要进行解码的;实际是容器已经进行了解码。但这个时候就会有一个问题,但是我没有进行验证:如果使用gbk 传输的中文,到服务器端,必须的进行程序解码;举例如下
网页提交字符串:
当页面中的表单提交字符串时,首先把字符串按照当前页面的编码,转化成字节串。然后再将每个字节转化成 "%XX" 的格式提交到 Web 服务器。比如,一个编码为 GB2312 的页面,提交 "中" 这个字符串时,提交给服务器的内容为 "%D6%D0"。
在服务器端,Web 服务器把收到的 "%D6%D0" 转化成 [0xD6, 0xD0] 两个字节,然后再根据 GB2312 编码规则得到 "中" 字。
在 Tomcat 服务器中,request.getParameter()
得到乱码时,常常是因为前面提到的服务器端未解码造成的。默认情况下,当提交 "%D6%D0" 给 Tomcat
服务器时,request.getParameter() 将返回 [0x00D6, 0x00D0] 两个 UNICODE 字符,而不是返回一个
"中" 字符。因此,我们需要使用 bytes = string.getBytes("iso-8859-1") 得到原始的字节串,再用
string = new String(bytes, "GB2312") 重新得到正确的字符串 "中。
我理解的是只有客户端和服务端口不一致编码的时候,客户端有使用了urlencode进行了编码, 服务端不进行解码 才会出现乱码; 但是如果两端约定使用的都是一一致的编码 ,那应该不存在这种问题。一会验证了这个问题了,在过来更新!
详情参考链接: http://www.iteye.com/problems/56952
posted on 2016-11-28 20:37 Alan_Wang 阅读(39214) 评论(0) 编辑 收藏 举报