URISyntaxException查询中的非法字符

我试图在默认浏览器中打开一个链接。 我使用了以下代码。

String myUrl = "http://www.example.com/engine/myProcessor.jsp?Type=A Type&Name=1100110&Char=!"; try { Desktop.getDesktop().browse(new URI(myUrl)); } catch (IOException err) { setTxtOutput("Error: "+err.getMessage()); } catch (URISyntaxException err) { setTxtOutput("Error: "+err.getMessage()); } catch (Exception err) { setTxtOutput("Error: "+err.getMessage()); } 

我在索引查询中得到URISyntaxException非法字符

我觉得这是因为人物如 在我的url中。 我试过用:

 URLEncoder.encode(myUrl, "UTF-8"); 

但这给了我另一个错误。

 Failed to open http%3A%2F%2Fwww.example.com%2F........... The system cannot find the file specified. 

请问您能告诉我如何纠正URISyntaxException非法字符错误。

这是因为这里有空格...jsp?Type=A Type&... ,你可以用+替换它

 http://www.example.com/engine/myProcessor.jsp?Type=A+Type&Name=1100110&Char=!" 

您不应对整个URL进行编码,因为URI类需要有效的协议。 仅对参数进行编码

 myUrl = "http://www.example.com/engine/myProcessor.jsp?" + URLEncoder.encode("Type=A Type&Name=1100110&Char=!", "UTF-8"); 

将URL中的空格替换为+ like如果url包含category = Adult Care,则将其替换为category = Adult + Care。

以下代码适用于我:

 MultivaluedMap params = new MultivaluedMapImpl(); params.add("filter", URLEncoder.encode(filter)); _webResource.path(MessageFormat.format(this._methodName,this._params)) .queryParams((MultivaluedMap) this._params) .type("application/x-www-form-urlencoded") .accept("application/json") .get(ClientResponse.class);