我在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(). ;
但我得到的结果相同。
我该如何解决这个问题?
答案 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的元素。
你得到的是一堆人物。
希望你觉得这很有用。