URISyntaxException 查询中的非法字符

Har*_*pta 10 java uri

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

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());
        }
Run Code Online (Sandbox Code Playgroud)

我在索引处的查询中收到URISyntaxException非法字符

我认为这是因为诸如? , &! 在我的网址中。我尝试使用:

URLEncoder.encode(myUrl, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

但这给了我另一个错误。

Failed to open http%3A%2F%2Fwww.example.com%2F........... 
The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

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

Sot*_*lis 12

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

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


Evg*_*eev 7

这是因为这里有空格...jsp?Type=A Type&...,您可以将其替换为+

http://www.example.com/engine/myProcessor.jsp?Type=A+Type&Name=1100110&Char=!"
Run Code Online (Sandbox Code Playgroud)