Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用encoding URIbuilder()方法_Java_Url_Encoding_Uri_Encode - Fatal编程技术网

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

如何在Java中使用encoding URIbuilder()方法,java,url,encoding,uri,encode,Java,Url,Encoding,Uri,Encode,我在JAVA中使用一些API 我需要在URI中使用韩文文本,请求是字符串变量。 如果我设置request=”안녕하세요";我使用以下代码: final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **request**).setParameters(param).build(). ; 如果我使用它,我可以看到以下结果: 我已尝试使用此代码:

我在JAVA中使用一些API

我需要在URI中使用韩文文本,请求是字符串变量。
如果我设置
request=”안녕하세요";我使用以下代码:

final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **request**).setParameters(param).build(). ;
如果我使用它,我可以看到以下结果:

我已尝试使用此代码:

final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **URLEncoder.encode(request, "UTF-8")**).setParameters(param).build(). ;
但我得到了同样的结果


如何解决此问题?

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

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

URI是一个非常有限的集合中的字符序列: 基本拉丁字母表中的字母、数字和一些特殊字母 人物

后来它说:

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

这就是你得到的一堆角色


希望你觉得这很有用。

非常感谢!我还有其他路线。.最终URI uri2=新URI(URI.getScheme()+“://”+URI.getHost()+URI.getPath()+“?”+URI.getQuery());我不知道为什么没有中断文本,但我认为比我的代码更好,真的谢谢!!