当前位置: 首页 > 面试题库 >

如何对URL进行编码以避免Java中的特殊字符?

左丘季
2023-03-14
问题内容

我需要使用Java代码对URL进行编码,以避免使用特殊字符,例如空格和%和&… etc


问题答案:

URL的构造很棘手,因为URL的不同部分对允许使用什么字符有不同的规则:例如,加号保留在URL的查询部分中,因为它表示空格,但在URL的路径部分中保留了一个空格。加号没有特殊含义,空格编码为“%20”。

RFC2396解释(在2.4.2节中),完整的URL始终采用其编码形式:您获取各个组件(方案,权限,路径等)的字符串,并根据其自己的规则对每个组件进行编码,然后将它们组合成完整的URL字符串。尝试构建完整的未编码URL字符串然后对其进行单独编码会导致一些细微的错误,例如路径中的空格被错误地更改为加号(符合RFC的服务器会将其解释为真实的加号,而不是编码的空格)。

在Java中,构建URL的正确方法是使用URI类。使用将URL组件作为单独的字符串的多参数构造函数之一,它将根据该组件的规则正确地转义每个组件。该toASCIIString()方法为您提供了正确转义的编码字符串,可以将其发送到服务器。要_解码_ URL,请URI使用单字符串构造函数构造一个对象,然后使用访问器方法(例如getPath())来检索已解码的组件。

不要URLEncoder上课!尽管有名称,该类实际上执行HTML表单编码,而不是URL编码。这是
正确的串联未编码字符串,使一个“未编码”的网址,然后通过它通过URLEncoder。这样做会导致问题(尤其是上述关于路径中的空格和加号的问题)。



 类似资料:
  • 问题内容: 在Java中,我需要使用HTTP Post将请求发送到服务器,但是如果URL的参数中包含一些特殊字符,它将在Exception下面抛出 java.lang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符-对于输入字符串:“&’” 发送数据的代码 在服务器端,我使用以下代码读取信息 代码可以正常工作,但是如果我输入一些特殊字符,

  • 我正在尝试转义字符串中的XML特殊字符。转义由静态方法处理,如下所示。 现在,这种实现的问题是,我得到了一段字符串,它可能被解析,也可能不被解析。这导致输出不规则。 例如: 现在,为了得到正确的响应,我计划在静态方法中引入一个检查。通过使用if条件,如下所示。 这是一种正确的实施方式吗?如果不是,请提出建议?

  • 我面临的一个场景是,字符“ᦙ”偶尔会从我的okhttp请求中返回,这个字符会导致一些下游问题。因此,我添加了代码来删除这个字符,如果它存在,我想添加一个测试用例,以确保这一工作正常。问题是wiremock似乎不喜欢这个特殊的角色。 通常我会这样从响应中提取数据: 通常这适用于我所有的请求。但是,当我设置wiremck以返回带有特殊字符的响应时(即使是单个响应,我想用许多不同的字段进行测试),字符串

  • 我想为我的网站创建一个编码的网址。例如,对于这个URL:"http://google.com/index.html" 我想通过URL编码将此URL提供给客户端。

  • 问题内容: 我的python(2.7版)脚本运行良好,可以从本地html文件中获取一些公司名称,但是当涉及到某些特定的国家/地区名称时,则会出现此错误“UnicodeEncodeError:’ascii’编解码器无法编码字符” 此公司名称到来时特别出错 公司名称: KühlfixKälteanlagenIng。Gerhard Doczekal&Co. KG 链接无法处理 错误显示在这行代码中: 问

  • 本文向大家介绍如何在iPhone中对字符串(NSString)进行URL编码?,包括了如何在iPhone中对字符串(NSString)进行URL编码?的使用技巧和注意事项,需要的朋友参考一下 在开发基于API的Web应用程序时,我们绝对需要与多个Web服务和URL相交。网址可能包含特殊字符,搜索字词,查询,标题和许多其他内容,具体取决于我们所需的服务。这就是为什么我们需要某种编码,以便我们创建的U