当前位置: 首页 > 面试题库 >

如何用Java进行URL解码?

袁单鹗
2023-03-14
问题内容

在Java中,我想将其转换为:

https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type

对此:

https://mywebsite/docs/english/site/mybook.do&request_type

这是我到目前为止所拥有的:

class StringUTF 
{
    public static void main(String[] args) 
    {
        try{
            String url = 
               "https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do" +
               "%3Frequest_type%3D%26type%3Dprivate";

            System.out.println(url+"Hello World!------->" +
                new String(url.getBytes("UTF-8"),"ASCII"));
        }
        catch(Exception E){
        }
    }
}

但这行不通。这些%3A和%2F格式分别是什么?如何转换它们?


问题答案:

这与字符编码(例如UTF-8或ASCII)无关。你所拥有的字符串已进行URL编码。这种编码与字符编码完全不同。

尝试这样的事情:

try {
    String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
    // not going to happen - value came from JDK's own StandardCharsets
}
Java 10 Charset为该API 添加了直接支持,这意味着无需捕获UnsupportedEncodingException:

String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8);

请注意,字符编码(例如UTF-8或ASCII)决定了字符到原始字节的映射。



 类似资料:
  • 问题内容: 我将NodeJS与Express一起使用,当我在URL中使用外来字符时,它们会自动进行编码。 如何将其解码回原始字符串? 在调用NodeJS之前,我先转义字符。 所以字符串: 成为 现在,整个URL如下所示: 现在在我的NodeJS中,我得到了转义的字符串。 这是相关代码: 我已经尝试过和图书馆,但似乎没有适合我的情况。 问题答案: 更新16/03/18 并且已弃用。 用: 旧答案 给

  • 问题内容: 我正在查看以下API: http://wiki.github.com/soundcloud/api/oembed- api 他们举的例子是 呼叫: 响应: 我该怎么做才能仅通过URL获得此JSON对象? 问题答案: 看来他们为format参数提供了一个选项,它将返回JSONP。您可以像这样检索JSONP:

  • 问题内容: 我有一个数据库,其中包含以二进制Blob存储的图片数据。该文档说数据是使用LZW编码的。我以为我可以使用Java库中的Zip或GZip输入流对其进行解码,但是它不起作用- 我遇到了一个例外,即数据格式不正确。 根据我的阅读,该库使用DEFLATE,而不是LZW。另外,我已经阅读了有关使用LZW算法的许可问题。 我可以用什么来解码数据?有图书馆吗?我必须自己实施吗?许可问题呢? 问题答案

  • 我想为我的网站创建一个编码的网址。例如,对于这个URL:"http://google.com/index.html" 我想通过URL编码将此URL提供给客户端。

  • 问题内容: 如何使用java进行json数据解析?有哪些方法? 问题答案: 使用org.json 使用GSON

  • 我是新来的Node.js,并试图检查如果电子邮件已经通过发送电子邮件作为一个url参数从iOS应用程序。它不起作用,不确定我做错了什么。 我无法console.log前端发送的VSCode中的电子邮件参数,它在XCODE(http://localhost:3000/api/user/email/test@gmail.com)中打印,我知道后端正在获取GET请求。 我的路由器代码是: 非常感谢。