Android开发中请求URL中参数含有中文和空格的解决方法

来源:互联网 发布:mac系统numbers教程 编辑:程序博客网 时间:2024/05/19 10:36

在做安卓应用时,碰到要处理URL请求的中文参数,我们需要用到URLEncoder.encode(参数,"utf-8")方法对中文参数进行编码,这样做,能够解决大多数中文参数的乱码问题,当然编码方式不一定是“utf-8”,这取决于你服务器端的编码格式。

但是,若是请求参数中不仅含有中文,而且还含有空格时,还需要做进一步处理。通过URLEncoder.encode()方法处理后,参数的中文乱码是被解决了,但是空格符也会被转码成“+”号而不被服务器识别,这时,你还需要用到replaceAll("\\+","%20")把"+"转换成"%20",这样再提交基本就能获取到你想要的响应结果了。

对于使用URLEncoder.encode()方法时,尽量不要对整个请求URL进行转换,而是分开来使用,即单独对请求参数使用URLEncoder.encode(参数,"utf-8").replaceAll("\\+","%20"),完成后再使用+拼接字符串构建完整的请求路径。下面举一个简单的例子:

例如,请求URL = "http://www.baidudu.com/music?param=明天 你好-牛奶咖啡.mp3" 我们提取请求参数String param="明天 你好 -牛奶咖啡.mp3"; 对它进行转换

param = URLEncoder.encode(param ,"utf-8").replaceAll("\\+","%20"),完成后在构建回原来完整的URL,即URL =  "http://www.baidudu.com/music?param="+param;这样,问题就能得到解决了。第一次写博客,有什么不对的请大家多多指教。

0 0