用java获取URL路径时出现非法字符

真正路径中没有这个的!

经常会在浏览器的地址栏里看到这样的字符串%E6%96%87%E6%A1%A3
这就是被编码后的字符串,下面就讨论一下java 的url编码与解码问题

java.net.URLDecoder.decode(String s,String enc);
将application/x-www-form-urlencoded字符串转换成普通字符串。

java.net.URLEncoder.decode(String s,String enc);
将普通字符串转换成application/x-www-form-urlencoded字符串

代码示例:

import java.net.URLDecoder;

import java.net.URLEncoder;

public class URLDecoderTest {

public static void main(String[] args) throws Exception {
//将application/x-www-form-urlencoded字符串

//转换成普通字符串

//必须强调的是编码方式必须正确,如baidu的是gb2312,而google的是UTF-8

String keyWord = URLDecoder.decode("%E6%96%87%E6%A1%A3", "gb2312");
System.out.println(keyWord);
//将普通字符串转换成

//application/x-www-form-urlencoded字符串

//必须强调的是编码方式必须正确,如baidu的是gb2312,而google的是UTF-8

String urlStr = URLEncoder.encode("文档", "gb2312");

System.out.println(urlStr);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-26
%20 表示空格。
这是什么原因出现了%,这是URL编码的问题麻,这个路径已经被编码过了,所以要解码,
只要在程序中加一句:
testtext = java.net.URLDecoder.decode(testtext, "UTF-8");本回答被提问者采纳
第2个回答  2013-08-27
%20 就是16进制的20也就是十进制的32,也就是空格的ASCII的值,这里你看到的%20就表示的是空格
第3个回答  2013-08-26
这个应该不属于非法字条吧,这应该是转换过来的unicode 编码还是Ascll 二码
第4个回答  2013-08-26
你发现一个问题没,出现空格的地方才会有这些所谓的非法字符,由于java的特性,安装软件时不要安装在(1、有空格的路径下,2、有中文的路径下)
相似回答