encodeURI 确保特殊字符能够正确传输

2024-08-28 14:36

本文主要是介绍encodeURI 确保特殊字符能够正确传输,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 JavaScript 中,decodeURIComponentdecodeURIencodeURI 和 encodeURIComponent 是用于编码和解码 URI(Uniform Resource Identifier)的常用函数。它们各有不同的用途和适用场景。

1. encodeURI

encodeURI 用于对整个 URI 进行编码,确保所有特殊字符都被转换为百分号编码形式。

用途
  • 编码整个 URI,包括协议、主机名、路径、查询字符串等。
示例
const uri = "http://example.com/path?query=value&another=value with spaces"; console.log(encodeURI(uri)); // 输出: http://example.com/path?query=value&another=value%20with%20spaces

2. encodeURIComponent

encodeURIComponent 用于对 URI 的各个组成部分(如查询字符串中的值)进行编码。
用途
  • 编码 URI 的各个组成部分,如查询参数的值。
示例
const value = "value with spaces"; console.log(encodeURIComponent(value)); // 输出: value%20with%20spaces

3. decodeURI

decodeURI 用于解码整个编码后的 URI。

用途
  • 解码整个编码后的 URI。
const encodedUri = "http%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue%26another%3Dvalue%2520with%2520spaces"; console.log(decodeURI(encodedUri)); // 输出: http://example.com/path?query=value&another=value%20with%20spaces

4. decodeURIComponent

decodeURIComponent 用于解码 URI 的各个组成部分(如查询字符串中的值)。

用途
  • 解码 URI 的各个组成部分,如查询参数的值。
示例
const encodedValue = "value%20with%20spaces"; console.log(decodeURIComponent(encodedValue)); // 输出: value with spaces

实际应用场景

假设你有一个对象需要通过 URL 查询参数传递,并且需要对其进行编码和解码。

编码对象

<template> <div> <button @click="navigateToCustomsData">Navigate</button> </div> </template> <script> export default { data() { return { obj: { key1: 'value1', key2: 'value with spaces' } }; }, methods: { navigateToCustomsData() { const encodedData = encodeURIComponent(JSON.stringify(this.obj)); const href = this.$router.resolve({ name: 'customsDataScreen', query: { data: encodedData } }).href; window.location.href = href; } } }; </script>

解析对象

<template> <div> <pre>{{ parsedObj }}</pre> </div> </template> <script> export default { data() { return { parsedObj: null }; }, created() { this.parseQueryParams(); }, methods: { parseQueryParams() { const queryParams = this.$route.query; if (queryParams.data) { const decodedData = decodeURIComponent(queryParams.data); try { this.parsedObj = JSON.parse(decodedData); } catch (error) { console.error('Error parsing JSON:', error); this.parsedObj = null; } } } } }; </script>

总结

  • encodeURI:用于编码整个 URI,保留一些特殊字符(如 -_. 和 ~)。
  • encodeURIComponent:用于编码 URI 的各个组成部分(如查询参数的值),对所有特殊字符进行编码。
  • decodeURI:用于解码整个编码后的 URI。
  • decodeURIComponent:用于解码 URI 的各个组成部分(如查询参数的值),对所有特殊字符进行解码。

在实际应用中,根据具体情况选择合适的函数进行编码和解码。对于查询参数的值,推荐使用 encodeURIComponent 和 decodeURIComponent

这篇关于encodeURI 确保特殊字符能够正确传输的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115037

相关文章

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Redis 篇-深入了解基于 Redis 实现分布式锁(解决多线程安全问题、锁误删问题和确保锁的原子性问题)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 分布式锁概述         1.1 Redis 分布式锁实现思路         1.2 实现基本的分布式锁         2.0 Redis 分布式锁误删问题         2.1 解决 Redis 分布式锁误删问题         3.0 Redis 分

远程桌面文件传输异常或者取消传输后一直显示正在取消

环境: Window Servers 2008 R2 摘要说明: 本篇文章主要讲述当应用远程桌面进行文件传输时,若因网络等导致进程中断,再次传输时则不能进行文件传输;或者传输时取消传输,然后一直显示正在取消。此时可以通过重启window的rdpclip.exe进程来解决此问题 步骤 1.关闭rdpclip.exe进程 远程桌面连上上传输异常的服务器,打开资源管理器,在进程列关闭rdpc

Java传输本地目录到远程服务器

在使用Java进行开发时,有时需要将本地目录中的文件复制或传输到远程服务器上。这种场景在部署应用程序或进行数据迁移时尤为常见。JSch库提供了一种简便的方法来实现这一功能。以下是从Codekru网站获取的信息摘要,并结合相关内容,展示如何使用JSch库实现从本地计算机复制整个目录到远程服务器的过程。 准备工作 首先,确保您的项目中已经包含了JSch库的依赖。如果您使用Maven作为构建工具,可

高效传输秘籍,揭秘Rsync和SCP的优劣,助你做出明智选择!

在日常的运维工作中,文件传输任务频繁出现,而选择合适的工具能显著提高工作效率。Rsync 和 SCP 是两款常见的文件传输工具,但它们各具优缺点,适合不同的场景。本文将通过深入分析这两款工具的特性、使用场景和性能,帮助你做出明智的选择,从而在文件传输中省时省力。 Rsync 与 SCP 简介 Rsync:增量传输的强大工具 Rsync 是一款支持文件同步的工具,广泛应用于备份和传输

Linux:特殊字符整理

嗯,不是其它内容,而是用Linux开发时,初期在各种指令和shell脚本中挣扎过。 其中让我精神崩溃的不是别的,而是"特殊字符"。这些特殊字符,各自都有固有的命令,所以现在想整理一下。 1. 标准输出 表示标准输出的特殊字符是">",如果使用该特殊字符,可以下达以下命令。 # '>' 标准输出 (new)$ ls > test.txt # 将标准输出写入文件 。 通过ls指令输出的内容记