如何在Java中使用编码URIbuilder()方法

时间:2015-07-23 21:07:34

标签: java url encoding uri encode

我在JAVA中使用了一些API。

我需要在URI中使用韩文文本,request是String变量 如果我设置request = "안녕하세요";并使用代码:

final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **request**).setParameters(param).build(). ;

如果我使用它,我可以看到以下结果:

  

https://api.net/api/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94?api_key

我已经尝试过使用此代码:

final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **URLEncoder.encode(request, "UTF-8")**).setParameters(param).build(). ;

但我得到的结果相同。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的URI已经过编码。与URL一样,您不能使用特殊字符,如果要检索request字符串,则必须解码URI的特定部分,如下所示:

String result = java.net.URLDecoder.decode(uri.getPath(), "UTF-8");
System.out.println(result);          // this will print "/api/안녕하세요"

RFC 3986, Uniform Resource Identifier (URI): Generic Syntax证实了这一点:

  

URI是来自非常有限集合的字符序列:   基本拉丁字母,数字和一些特殊的字母   字符。

后来它说:

  

可以在URI中使用百分比编码的八位字节[...]   表示US-ASCII编码字符范围之外的字符   如果方案或协议允许此表示,则设置   引用URI的元素。

你得到的是一堆人物。

希望你觉得这很有用。