【JS】url传参中文乱码的解决方法
2023-09-11 14:14:50 时间
1、escape 和 unescape
escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。
采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。
escape()函数用于js对字符串进行编码,不常用。
//跳转页
location.href = './test.html?'+escape('name=张三&age=18')
//接收页
var str = unescape(location.search.substr(1));
//url显示
'test.html?name%3D%u5F20%u4E09%26age%3D18'
注意:使用此方法时,不能对整个url进行编码,仅可对传参进行编码,因为会对 “?”等进行编码,导致路径错误,所以一般不用该方法。
2、encodeURI 和 decodeURI
把URI字符串采用UTF-8编码格式转化成escape各式的字符串。
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURI()用于整个url编码
//跳转页
location.href = encodeURI('./test.html?name=张三&age=18');
//接收页
var str = decodeURI(location.search.substr(1));
//url显示
'test.html?name=张三&age=18'
3、encodeURIComponent 和 decodeURIComponent
与encodeURI()的不同的是,“; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
//跳转页
location.href = './test.html?'+encodeURIComponent('name=张三&age=18');
//接收页
var str = decodeURIComponent(location.search.substr(1));
//url显示
'test.html?name%3D张三%26age%3D18'
注意:使用此方法时,不能对整个url进行编码,仅可对传参进行编码,因为会对 “?”等进行编码,导致路径错误,所以一般不用该方法。
相关文章
- H5+JS生成验证码
- JS框架_(JQuery.js)圆形多选菜单选项
- JS框架_(JQuery.js)Tooltip弹出式按钮插件
- JS框架_(JQuery.js)点赞按钮动画
- baguetteBox.js响应式画廊插件(纯JS)
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
- 自己写的js substr支持中文截取(中文是双字符)
- js位操作
- mock js使用方法简单记录
- Atitit stomp.js conn连接activemq 目录 1.1. activemq 启动,已经默认开启了stomp ws的接口。。地址是1 1.2. Js 客户端代码1 1.3
- Angular platform-server.js 里动态创建 JavaScript 标签页的场景
- 华为OD机试 - 最短木板长度(Java & JS & Python)
- JS将阿拉伯数字翻译成中文的大写数字、JS将数字转换为大写金额(整理)
- 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'express'
- 从零开始学_JavaScript_系列(八)——js系列<2>(事件触发顺序、文本读取、js编写ajax、输入验证、下拉菜单)
- 九九乘法表(js_javascript)
- JS:crypto-js模块实现数据加密解密
- JS:使用Mock.js生成随机数据,拦截 Ajax 请求
- babel配置项目目录支持转换es6语法,引入非项目目录js后,引入Js转换无效
- js-jquery-Validate校验【二】中文api
- 【JS高级】js面向对象三大特性之封装—如何创建对象_05
- 原生js实现随机验证码HTMl-JS
- js实现返回页面顶部