繁体   English   中英

如何在 Java 中修复 URL 中的非法字符?

[英]How to fix illegal characters in URL in Java?

我想要一个函数来检测 URL 中的无效字符并将它们替换为它们的编码等效项。 例如:

ensureValidUrl("http://example.com/invalid url/") // "http://example.com/invalid%20url/"

我曾尝试过URLEncoder.encode ,但这也对我不想要的协议进行了编码。

static String getValidURL(String invalidURLString){
    try {
        // Convert the String and decode the URL into the URL class
        URL url = new URL(URLDecoder.decode(invalidURLString, StandardCharsets.UTF_8.toString()));

        // Use the methods of the URL class to achieve a generic solution
        URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
        // return String or
        // uri.toURL() to return URL object
        return uri.toString();
    } catch (URISyntaxException | UnsupportedEncodingException | MalformedURLException ignored) {
        return null;
    }
}

使用 URI 和 URL 类的组合,可以实现您的解决方案。 更多关于URLURI字符集

用法:

System.out.println(getValidURL("http://example.com/invalid url/"));
// http://example.com/invalid%20url/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM