新闻中心
JS中URL编码与解码方法详解_j*ascript技巧
encodeURI用于编码完整URL,保留结构字符,适用于整个链接;encodeURIComponent更严格,编码所有特殊字符,适合参数值;两者对应各自的解码方法,避免乱码。

在J*aScript中处理URL时,经常需要对特殊字符进行编码和解码,以确保数据能正确传输。由于URL中不允许出现空格、中文或其他非ASCII字符,必须通过编码转换为合法格式。JS提供了三种常用方法来实现这一功能:encodeURI、encodeURIComponent 和 decodeURI、decodeURIComponent。下面详细介绍它们的用法与区别。
encodeURI:编码完整URL
encodeURI 用于对整个URL进行编码,它会保留URL中的合法结构字符,如冒号、斜杠、问号、井号等,只对非法字符进行转义。
适用场景:当你希望编码一个完整的URL,同时保持其结构完整时使用。
- 不会被编码的字符包括:: / ? # @ + - _ . !
~ * ' ( )
- 会被编码的字符:空格、中文、制表符等
示例:
立即学习“J*a免费学习笔记(深入)”;
星声AI
可分享的AI播客内容生成器和效率工具
185
查看详情
const url = "https://example.com/搜索页面?name=张三";
console.log(encodeURI(url));
// 输出: https://example.com/%E6%90%9C%E7%B4%A2%E9%A1%B5%E9%9D%A2?name=%E5%BC%A0%E4%B8%89
encodeURIComponent:编码URL组件
encodeURIComponent 比 encodeURI 更严格,它会把所有非字母数字字符都编码,包括 &, =, % 等用于分隔参数的符号。
适用场景:用于编码URL中的查询参数值或片段,防止特殊字符破坏参数结构。
- 几乎所有特殊字符都会被编码
- 常用于拼接 query 参数时对值进行处理
示例:
立即学习“J*a免费学习笔记(深入)”;
const paramName = "姓名";
const paramValue = "李四&年龄=25";
const encoded = encodeURIComponent(paramName) + "=" + encodeURIComponent(paramValue);
console.log(encoded);
// 输出: %E5%90%8D%E5%AD%97=%E6%9D%8E%E5%9B%9B%26%E5%B9%B4%E9%BE%84%3D25
decodeURI 与 decodeURIComponent:解码操作
这两个方法分别用于还原由 encodeURI 和 encodeURIComponent 编码后的字符串。
- decodeURI:解码整个URL,适用于之前用 encodeURI 编码的内容
- decodeURIComponent:解码单独的参数部分,处理更彻底
注意:如果用错解码方法(比如用 decodeURI 去解 encodeURIComponent 的结果),可能导致部分字符无法正确还原。
示例:
立即学习“J*a免费学习笔记(深入)”;
const encodedStr = "%E5%BC%A0%E4%B8%89";
console.log(decodeURIComponent(encodedStr)); // 输出: 张三
console.log(decodeURI("https%3A%2F%2Fexample.com")); // 不推荐,应使用 decodeURIComponent
常见问题与使用建议
实际开发中容易混淆这两个编码方法,以下是一些实用建议:
- 编码整个URL链接时用 encodeURI
- 编码URL中的参数值或键时用 encodeURIComponent
- 不要对已经编码过的字符串重复编码,否则会出现双重编码错误
- 服务端接收时也要对应解码方式,避免乱码
例如,在拼接带中文参数的请求链接时:
const baseUrl = "https://api.example.com/search";
const query = "城市=北京&类型=住宅";
const url = baseUrl + "?" + Object.keys(obj).map(key =>
`${key}=${encodeURIComponent(obj[key])}`).join("&");
基本上就这些。掌握好 encodeURI 与 encodeURIComponent 的使用时机,能有效避免前端传参中的乱码和解析错误问题。不复杂但容易忽略细节。
以上就是JS中URL编码与解码方法详解_j*ascript技巧的详细内容,更多请关注其它相关文章!
# 时用
# 从化区营销网站建设
# 云索seo矩阵
# 昆明网站seo优化哪家效果好
# 武汉图文营销推广方法
# 津南区营销推广渠道招聘
# 百度推广营销岗位有哪些
# 定制网站建设要求
# 塔城地网站推广
# 昆山企业网站怎么建设
# 烟台seo优化外包
# 内存管理
# 如何实现
# 如何用
# javascript
# 如何使用
# 用它
# 这两个
# 适用于
# 学习笔记
# 特殊字符
# 常见问题
# 区别
# 编码
# 前端
# js
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】
限制HTML日期输入框的日期选择范围
J*a应用集成GitHub CLI与API认证指南
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
新三国志曹操传110级星符试炼夏侯渊极难攻略
c++如何使用TBB库进行任务并行_c++ Intel线程构建模块
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
AO3访问入口汇总 AO3网页版同人作品一键直达
Win11怎么开启高性能模式_Windows 11电源计划优化设置
怎么在mac上运行html代码_mac运行html代码方法【指南】
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
Excel Power Pivot如何处理XML数据源 构建高级数据模型
ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句
C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责
如何提高微信支付的安全性_微信支付安全防护与设置建议
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
如何在CSS中使用visited与link控制链接颜色_visited link伪类配合
Python实现多节点属性重叠度分析教程
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
J*a实现学校排课程序_面向对象结构化项目示例
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
Lar*el头像管理:图片缩放与旧文件删除的最佳实践
HTML空白字符处理机制:渲染、DOM与编码实践
Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
Tabulator表格日期时间排序问题及自定义解决方案
Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
在J*a中如何隐藏复杂性_使用门面模式组织对象交互
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
狙击外星人小游戏开始_狙击外星人小游戏立即开始
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
深入理解J*aScript Promise异步执行与微任务队列
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
小红书网页版入口链接分享 小红书官网直接进
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
抖音创作助手登录入口_抖音创作辅助工具官网直达
抓大鹅解压小游戏 抓大鹅摸鱼解压入口
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
Discord Slash 命令响应超时问题的异步解决方案
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
淘宝网网页版登录入口 淘宝官方网页版快捷登录
千牛数据看板网页版_千牛数据看板网页版访问方法


2025-10-31
浏览次数:次
返回列表
~ * ' ( )