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

真正路径中没有这个的!... 真正路径中没有这个的! 展开
 我来答
pieryon
2015-07-13 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166863
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
经常会在浏览器的地址栏里看到这样的字符串%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);
}
}
截竹为萧
2013-08-26 · TA获得超过155个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:195万
展开全部
%20 表示空格。
这是什么原因出现了%,这是URL编码的问题麻,这个路径已经被编码过了,所以要解码,
只要在程序中加一句:
testtext = java.net.URLDecoder.decode(testtext, "UTF-8");
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尧__不可及
2013-08-27 · 超过24用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:45.5万
展开全部
%20 就是16进制的20也就是十进制的32,也就是空格的ASCII的值,这里你看到的%20就表示的是空格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lv765800331
2013-08-26 · TA获得超过326个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:118万
展开全部
这个应该不属于非法字条吧,这应该是转换过来的unicode 编码还是Ascll 二码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-26
展开全部
你发现一个问题没,出现空格的地方才会有这些所谓的非法字符,由于java的特性,安装软件时不要安装在(1、有空格的路径下,2、有中文的路径下)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式