encodeURI 方法

      通过JavaScript拼接包含中文的URL。发现单数中文字符串值传递时出现乱码错误。使用encodeURI(URIString)就可以解决这个问题

 

      encodeURI 方法将文本字符串编码为一个有效的统一资源标识符 (URI)。

说明

     encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。          

     encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。

 

   encodeURIComponent(encodedURIString)必选的 encodedURIString 参数代表一个已编码的 URI 组件。

 说明

     encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。

### JavaScript `encodeURI` 使用方法及示例 #### 方法定义 `encodeURI` 是一种用于对 URI (Uniform Resource Identifier) 字符串进行编码的方法。它会替换掉 URI 中具有特殊含义的字符,使其能够安全地作为 URL 的一部分传输[^1]。 #### 编码范围 该方法不会对以下字符进行转义: `: / ? # [ ] @ ! $ & ' ( ) * + , ; =` 这意味着这些保留字符会被视为合法的 URI 部分而保持不变。如果需要更严格的编码(例如针对查询参数),则应使用 `encodeURIComponent`[^2]。 #### 语法结构 ```javascript encodeURI(uri); ``` - **uri**: 要被编码的统一资源标识符字符串。 #### 返回值 返回一个新的字符串,其中除了特定的保留字符外,其他所有非 ASCII 字符都被替换成百分号 (`%`) 后跟两位十六进制数表示的形式[^4]。 --- #### 示例代码 以下是几个典型的例子来展示如何使用 `encodeURI`: ```javascript const originalUri = "https://example.com/search?q=JavaScript教程&lang=zh-CN"; console.log(encodeURI(originalUri)); // 输出: https://example.com/search?q=JavaScript%E6%95%99%E7%A8%8B&lang=zh-CN ``` 在这个案例中,“教程”的中文字符被转换成了 `%E6%95%99%E7%A8%8B` 这样的 UTF-8 百分号编码形式,但是像 `?`, `=` 和 `/` 等符号并未受到影响[^3]。 另一个简单的实例: ```javascript const uriWithSpecialChars = "http://localhost/path/name with spaces!"; console.log(encodeURI(uriWithSpecialChars)); // 输出: http://localhost/path/name%20with%20spaces! ``` 这里可以看到空格被转化为 `%20`,但路径中的斜杠未受影响[^5]。 --- #### 常见问题解答 当尝试传递一个非法或者不完整的 URI 给 `encodeURI` 时,浏览器可能会抛出错误 `"URIError"`。因此,在调用此函数之前最好先验证输入数据的有效性。 #### 解码操作 对于通过 `encodeURI` 编码过的字符串,可以利用其对应的解码方法 `decodeURI` 来还原原始内容: ```javascript const encodedString = encodeURI("http://example.org/?test=a b c"); console.log(decodeURI(encodedString)); // 输出: http://example.org/?test=a b c ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值