【问题标题】:Illegal character in path at index 16 [duplicate]索引 16 处路径中的非法字符 [重复]
【发布时间】:2011-06-26 21:53:45
【问题描述】:

我在 RAD 中收到以下错误:

java.net.URISyntaxException: Illegal character in path at index 16: file:/E:/Program Files/IBM/SDP/runtimes/base......

能否请您告诉我错误是什么以及如何解决?

【问题讨论】:

标签: java


【解决方案1】:

索引 16 处有一个非法字符。我会说它不喜欢路径中的空格。你可以percent encode空格等特殊字符。在这种情况下,将其替换为 %20。

我上面链接的问题建议使用URLEncoder

String thePath = "file://E:/Program Files/IBM/SDP/runtimes/base";
thePath = URLEncoder.encode(thePath, "UTF-8"); 

【讨论】:

  • file:/// 是文件。注意三个
  • 嗯...它并没有真正起作用:空格被替换为加号,而不是 %20,而且所有的斜线也被破坏了......见这里:stackoverflow.com/questions/4737841/…跨度>
  • 不要使用 John 下面写的 URLEncoder 只会让事情变得更糟。
  • 当我使用“cycli”(一个 Neo4j命令行实用程序)通过 Cypher 脚本从 CSV 文件导入数据。我的 CSV 文件名包含空格;我用下划线替换了那些,错误就消失了。
【解决方案2】:

我在使用 Bing 地图 API 时遇到了同样的问题。 URLEncoder 只会让事情变得更糟,但 replaceAll(" ","%20"); 成功了。

【讨论】:

  • 或许还有其他字符需要编码?喜欢[
  • 我无意中在 URL 的末尾多了一个空格。删除它解决了这个问题。
  • 对我不起作用
  • 这对我有用..
【解决方案3】:

安装目录不能有空间。 重新安装软件会更正它

【讨论】:

  • 这是解决问题的一种方法,但我认为你是在讽刺,对吧?
  • 这是一种落后的思维方式,让我们将 70 年代和 80 年代的繁琐剩余部分拖到当今的软件中——并浪费不必要的时间和金钱。当前的软件必须能够使用 UTF-8 处理路径中的空格和非拉丁字符。
【解决方案4】:

我遇到了 xml 的类似问题。只是传递错误和解决方案(编辑 Jonathon 版本)。

代码:

HttpGet xmlGet = new HttpGet( xmlContent );

Xml 格式:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
    <code>CA</code>
    <name>Cath</name>
    <salary>300</salary>
</employee>

错误:

java.lang.IllegalArgumentException: Illegal character in path at index 0: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contents>
    <portalarea>CA</portalarea>
    <portalsubarea>Cath</portalsubarea>
    <direction>Navigator</direction>
</contents>
    at java.net.URI.create(URI.java:859)
    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:69)
    at de.vogella.jersey.first.Hello.validate(Hello.java:56)

不完全完美的解决方案:(该实例的错误消失了)

String theXml = URLEncoder.encode( xmlContent, "UTF-8" );
HttpGet xmlGet = new HttpGet( theXml );

知道我应该做什么吗?它刚刚清除通过但在执行此操作时出现问题

HttpResponse response = httpclient.execute( xmlGet );

【讨论】:

    【解决方案5】:

    你试过了吗?

    new File("<PATH OF YOUR FILE>").toURI().toString();
    

    【讨论】:

      【解决方案6】:

      如果 jdk 出现此错误,请使用:

      progra~1 代替路径示例中的程序文​​件:

       c:/progra~1/java instead of c:/program files/java
      

      在java代码中总是避免空格是可以的.....

      它可以用于程序文件中的所有东西,否则在路径的开头和en处加上引号

      "c:/..../"

      【讨论】:

        【解决方案7】:

        我今天收到了这个错误,与上述所有答案不同,我的错误是由于新的原因造成的。

        在我的日语翻译 strings.xml 文件中,我删除了一个必需的字符串。

        android 是如何将所有其他字符串混合在一起的,这会导致错误。

        解决方案是包含我正常的英文 strings.xml 中的所有字符串

        包括那些没有翻译成日语的字符串。

        【讨论】:

          【解决方案8】:

          空格也有同样的问题。 URL和URI的结合解决了它:

          URL url = new URL("file:/E:/Program Files/IBM/SDP/runtimes/base");
          URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
          

          * 来源:https://stackoverflow.com/a/749829/435605

          【讨论】:

          • 我的问题是我使用的是file://c:/..,但正如您在此处发布的那样,它是file:/c:/...(只有一个斜线)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-27
          • 1970-01-01
          • 1970-01-01
          • 2016-11-02
          • 2017-10-17
          • 2016-05-23
          • 2023-04-04
          相关资源
          最近更新 更多