Java URIBuilder设置参数添加+;而不是空间的%20

Java URIBuilder设置参数添加+;而不是空间的%20,java,decoding,uribuilder,Java,Decoding,Uribuilder,我正在尝试使用URIBuilder构建URL,出于某种原因,我得到了+而不是%20的空间 这是我的代码: URI uri=null; try { uri = ub.setScheme("http") .setHost("myalcoholist.com") .setPath("/drink-management/view-

我正在尝试使用URIBuilder构建URL,出于某种原因,我得到了+而不是%20的空间

这是我的代码:

            URI uri=null;
            try {
                uri = ub.setScheme("http")
                        .setHost("myalcoholist.com")
                        .setPath("/drink-management/view-drink-json")
                        .setParameter("flavor",(String)params[1])
                        .setParameter("brand",(String)params[2])
                        .setParameter("company",(String)params[3])
                        .build();
            } catch (URISyntaxException e) {
                Log.e("url", "could not parse url", e);
                return null;
            }
参数:

params[3] = {java.lang.String@831933398520}"contreau france."
params[2] = {java.lang.String@831933398384}"cointreau"
params[1] = {java.lang.String@831933398256}"orange"
结果URL:

"GET /drink-management/view-drink-json?flavor=orange&brand=cointreau&company=contreau+france. HTTP/1.1" 200 538 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)"
要正确编码参数,我需要更改什么


谢谢

我知道这篇文章很老了,但由于这是谷歌给我的第一个结果,没有答案,我用以下方法解决了这个问题:


只需使用
URLEncoder.encode(字符串,“UTF-8”)
和您想要进行此更改的字符串(字符串是您自己的字符串)。这将把字符串中UTF-8中的所有字符编码为URL格式。

您为什么认为
+
对查询参数中的空格编码无效?(至少在HTTP方案中…(顺便说一句,这是哪个UriBuilder类?我相信有多个…)顺便说一句,我并不是说使用%20也无效。org.apache.HTTP.client.utils.UriBuilder