Java中的URL百分比编码 URL=新URLhttp://www.example.com/data.php?q=%FD; logger.infourl:+url; URI=url.toURI; logger.infouri ASCII:+uri.toascistring; logger.infouristr:+uri.toString; logger.infoquery:+uri.getQuery; logger.infodecoded:+urldecker.decodeur.getRawQuery,WINDOWS-1252; 字符串scheme=uri.getScheme; 字符串auth=uri.getAuthority; 字符串路径=uri.getPath; String query=uri.getQuery; URI cleanedURI=新的URIscheme、auth、path、query、null; logger.infocleaned uri ASCII:+cleanedURI.toascistring; logger.infocleaned uri str:+cleanedURI.toString;

Java中的URL百分比编码 URL=新URLhttp://www.example.com/data.php?q=%FD; logger.infourl:+url; URI=url.toURI; logger.infouri ASCII:+uri.toascistring; logger.infouristr:+uri.toString; logger.infoquery:+uri.getQuery; logger.infodecoded:+urldecker.decodeur.getRawQuery,WINDOWS-1252; 字符串scheme=uri.getScheme; 字符串auth=uri.getAuthority; 字符串路径=uri.getPath; String query=uri.getQuery; URI cleanedURI=新的URIscheme、auth、path、query、null; logger.infocleaned uri ASCII:+cleanedURI.toascistring; logger.infocleaned uri str:+cleanedURI.toString;,java,url,url-encoding,Java,Url,Url Encoding,输出为: 网址:http://www.example.com/data.php?q=%FD uri ASCII:http://www.example.com/data.php?q=%FD uri str:http://www.example.com/data.php?q=%FD 查询:q=� 解码:q=ý 已清除的uri ASCII:http://www.example.com/data.php?q=%EF%BF%BD 已清除的uri str:http://www.example.com/dat

输出为:

网址:http://www.example.com/data.php?q=%FD uri ASCII:http://www.example.com/data.php?q=%FD uri str:http://www.example.com/data.php?q=%FD 查询:q=� 解码:q=ý 已清除的uri ASCII:http://www.example.com/data.php?q=%EF%BF%BD 已清除的uri str:http://www.example.com/data.php?q=� 因此,当我将URI拆分为多个部分,然后再次构造时,我无法返回原始URL。我如何才能取回原始URL,这是一个正确百分比编码的有效URL

我需要获取原始的%3F,而不是获取%EF%BF%BD

实际上,我试图实现的是以干净的方式操纵URL的某些部分,例如删除片段,但这与我的问题没有太大关系。

URLhttp://www.example.com/data.php?q=? 与http://www.example.com/data.php?q=%3F

%3F或数字63只不过是字符“?”的ascii码。 请在此处查看:

所以,如果你点击一个URL为%3f或“?”的浏览器;它的行为应该是一样的

若您非常关心它在控制台上的显示方式,您可以试试这个

String query  = uri.getQuery();

char charData = query.charAt(0);  // fetch the character from String

int asciiValue = (int)charData;


您可以查看String的getByte方法。这里有一个简短的教程-

使用URLEncoder.encodequery,ISO-8859-1。查询部分已经编码。如果你再次编码,我得到%253D%253Fhttp://www.example.com/data.php?q= +创建URL的通常方法是使用Windows-1252中的urlcoder.encodeURL。然后在服务器上生成一个普通的问号。我编辑了我的问题。对不起,对不起我的愚蠢。我编辑了我的问题。你是对的q=?与q=%3F相同。如果不发表适当的评论就否决投票,这真的很糟糕,也很粗鲁。请发表您的评论,以便改进答案。