当前位置: 首页 > 知识库问答 >
问题:

使用java编码URL并替换%20或其他特殊字符[重复]

鲜于光赫
2023-03-14

我想编码一个URL的方式,特殊字符,如“”(空格)是以正确的方式替代(%20的情况下空格)。我在网上找到的任何一个解决方案都没有达到预期的效果。

import org.apache.commons.lang.StringEscapeUtils;

public class MyTest {

    public static void main(String[] args)  {

        String bla="http://www.bla.com/bla.php?par1=bla bla bla";

        System.out.println(StringEscapeUtils.escapeHtml(bla));

    }
}
http://www.bla.com/bla.php?par1=bla bla bla
import java.net.MalformedURLException;
import java.net.URL;

public class MyTest {


    public static void main(String[] args) throws MalformedURLException {

        String bla="http://www.bla.com/bla.php?par1=bla bla bla";

        URL url = new URL(bla);


        System.out.println(url);

    }

}
http://www.bla.com/bla.php?par1=bla bla bla
http://www.bla.com/bla.php?par1=bla%20bla%20bla

那有什么办法吗?

共有1个答案

董子平
2023-03-14

尝试借助URL拆分URI:

String sUrl = "http://bla.com:8080/test and test/bla.php?query=bla and bla";
URL url = new URL(sUrl);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
String canonical = uri.toString();

System.out.println(canonical);

输出:

http://bla.com:8080/test%20and%20test/bla.php?query=bla%20and%20bla
 类似资料:
  • 有没有办法用gsub替换R中的特殊字符串?我有几列里面有,我想把它改为,但是gsub不起作用 下面是一个例子: 我收到以下输出:

  • 问题内容: 在Java中,我需要使用HTTP Post将请求发送到服务器,但是如果URL的参数中包含一些特殊字符,它将在Exception下面抛出 java.lang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符-对于输入字符串:“&’” 发送数据的代码 在服务器端,我使用以下代码读取信息 代码可以正常工作,但是如果我输入一些特殊字符,

  • 相关网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shot/

  • 如何用单个字符替换n/重复字符?所有特殊字符

  • 问题内容: 我该如何更换: “ã”和“ a” “é”和“ e” 在PHP中?这可能吗?我读过某处我可以使用基本字符的ascii值和重音符号的ascii值进行一些数学运算,但是现在找不到任何参考。 问题答案: 这个答案是不正确的。 编写它时,我不理解Unicode规范化。查看francadaval的评论和链接 签出Normalizer类来执行此操作。文档很好,所以我将其链接起来,而不是在这里重复:

  • 问题内容: 是否有任何库可以将特殊字符替换为ASCII等效项,例如: 至: 我当然可以创建地图: 并使用一些替换功能。但是我不想将所有等效项硬编码到我的程序中,如果已经有一些功能可以做到这一点。 问题答案: