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
最新文章
- expect用法
- 5.SVM核函数
- 自定义评分器Similarity,提高搜索体验(转)
- WPF 多语言实现
- HDU 1264 Counting Squares(线段树求面积的并)
- VS 2013 中如何自定义代码片段
- Bind安装配置及应用
- IE下onchange事件不立即执行
- ZendFramework 环境部署
- Android studio 配置JNI环境
- 升级automake和autoconf
- 使用React改版网站后的一些感想
- Java精选笔试题
- django中request相关用法
- get和post提交数据的差别
- Unity中各种格式计时器
- Python中如何设置输出文字的颜色
- redis主从搭建
- 最短路-Prim算法 dijkstra算法
- TF-IDF算法(2)—python实现