【问题标题】:How to solve the exception Illegal character in path?如何解决路径中的异常非法字符?
【发布时间】:2010-09-20 17:27:19
【问题描述】:

我正在使用 XML 解析显示来自 URL 的图像,并且某些图像显示得非常好,但有时我会遇到异常,例如

索引 113 处路径中的非法字符:http://www.theblacksheeponline.com/party_img/thumbspps/12390867930_15951_186997180114_709920114_4296270_6115611_n[1].jpg

如何解决这个问题,请提供一些示例代码...

【问题讨论】:

标签: android


【解决方案1】:

特殊字符需要转义,例如%5B for [ 和%5D for ]

您可以使用java.net.URLEncoder 对 URL 进行编码,如

java.net.URLEncoder

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

这不仅可以解决 [ 或 ] 还可以解决其他编码问题

【讨论】:

    【解决方案2】:

    将此转义码用于 [ %5B 和结束]使用%5D

    【讨论】:

      【解决方案3】:

      这成功了:

      URL url = new URL("http://www.theblacksheeponline.com/party_img/thumbspps/12390867930_15951_186997180114_709920114_4296270_6115611_n[1].jpg");
      URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
      

      URLEncoder 用于 web 表单 application/x-www-form-urlencoded mime-type - 不是 http 网络地址。

      【讨论】:

        【解决方案4】:

        在 Java 程序或 servlet 中处理此问题的现代方法是使用 OWASP

        例如,如果使用 Maven 构建您的程序,请将以下内容添加到您的 pom.xml 文件中

        <properties>
            <owasp.version>1.2.1</owasp.version>
        </properties>
        
        <dependencies>
            <dependency>
                <groupId>org.owasp.encoder</groupId>
                <artifactId>encoder</artifactId>
                <version>${owasp.version}</version>
            </dependency>     
         </dependencies>
        

        然后调用Encode.forHtml方法:

        String safeStr= Encode.forHtml(str);
        

        【讨论】:

          猜你喜欢
          • 2022-12-17
          • 2014-04-10
          • 1970-01-01
          • 1970-01-01
          • 2012-06-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-28
          • 2017-10-17
          相关资源
          最近更新 更多