javascript中对编码的解读
首先来一下js知识的巩固与复习
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
2、 进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
3、 js使用数据时可以使用escape
例如:搜藏中history纪录。
4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
javascript对URL中的参数进行简单加密处理
javascript的api本来就支持Base64,因此我们可以很方便的来进行编码和解码。
var encodeData = window.btoa("name=xiaoming&age=10")//编码
var decodeData = window.atob(encodeData)//解码。
例子:
var encodedData = window.btoa("Hello, world"); // 编码
var decodedData = window.atob(encodedData); // 解码
在各浏览器中,使用 window.btoa 对Unicode字符串进行编码都会触发一个字符越界的异常.
先把Unicode字符串转换为UTF-8编码,可以解决这个问题, 代码来自Johan Sundstr?m:
function utf8_to_b64( str ) {
return window.btoa(unescape(encodeURIComponent( str )));
}
function b64_to_utf8( str ) {
return decodeURIComponent(escape(window.atob( str )));
}
// Usage:
utf8_to_b64('? à la mode'); // "4pyTIMOgIGxhIG1vZGU="
b64_to_utf8('4pyTIMOgIGxhIG1vZGU='); // "? à la mode"
//译者注:在js引擎内部,encodeURIComponent(str)相当于escape(unicodeToUTF8(str))
//所以可以推导出unicodeToUTF8(str)等同于unescape(encodeURIComponent(str))
//example
$(function () {
$(".edit-btn").on("click",function () {
var policyNo=$(this).parents(".t-r").find(".policy-no").text();
var holderName=$(this).parents(".t-r").find(".holder-name").text();
// $.ajax({
// url:"/reviseService/revise/reviseOption/"+policyNo+"/"+holderName+"",
// type:"POST",
// success:function () {
// window.location.href();
// }
// })
// window.open("/reviseService/revise/reviseOption/"+policyNo+"/"+holderName+"");
// window.open(encodeURIComponent("/reviseService/revise/reviseOption/"+window.btoa(policyNo+"/"+holderName+"")));
window.open("/reviseService/revise/reviseOption/"+ window.btoa(unescape(encodeURIComponent(policyNo+"/"+holderName+""))+""));
})
})
//例子
var url="http://localhost:8080/reviseService/revise/reviseOption/NkRZSUwxNzA1SkswMjAwMTE3MDAwMDA0OS/lvKDlhas=";
var uu=url.split("reviseOption/")[1];
console.log(uu);//NkRZSUwxNzA1SkswMjAwMTE3MDAwMDA0OS/lvKDlhas=
function b64_to_utf8(str) {
return decodeURIComponent(escape(window.atob(str)));
}
var aa=b64_to_utf8(uu);
console.log(aa);//6DYIL1705JK02001170000049/张八
var cc=aa.split("/");
console.log(cc);//["6DYIL1705JK02001170000049", "张八"]
参考文档:http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html
https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/btoa
http://www.cnblogs.com/xiao-lei/p/6064134.html
http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html
javascript中对编码的解读的更多相关文章
- Javascript中Base64编码解码的使用实例
Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...
- 关于JavaScript中的编码和解码函数
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
- JavaScript中的编码解码
1.URI 统一资源标识符(URI)是一个用于标识某一互联网资源名称的字符串.,该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.Web上可用的每种资源 -HTML文档.图像 ...
- C#与JavaScript中URL编码解码问题(转)
混乱的URI编码 JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode.Serv ...
- JavaScript中闭包之浅析解读
JavaScript中的闭包真心是一个老生常谈的问题了,最近面试也是一直问到,我自己的表述能力又不能完全支撑起来,真是抓狂.在回来的路上,我突然想到了一个很简单的事情,其实我们在做项目时候,其实就经常 ...
- JavaScript中的编码函数
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- PHP和javascript中url编码解码详解
在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baid ...
- 【js与jquery】javascript中url编码与解码
本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数 编码/解码 escape / u ...
- JavaScript中unicode编码与String互转(三种方法)
1.引言 JS本身就支持unicode转string功能,一共有三种方式和String单个字符转unicode编码. 2.方法 //unicode转String 1. eval("'&quo ...
随机推荐
- [MySql]MySql中外键设置 以及Java/MyBatis程序对存在外键关联无法删除的规避
在MySql设定两张表,其中product表的主键设定成orderTb表的外键,具体如下: 产品表: create table product(id INT(11) PRIMARY KEY,name ...
- vs下qt的信号与槽实现
实现主窗口中Add按钮的功能, 这一部分要特别注意,除了实现功能代码外,还需自己手动添加一些其他的代码(Qt Creator可以自动添加). 我们需要在2个地方添加代码. 第1个是在addressbo ...
- pip下载提速
方法一使用国内镜像: 清华:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中 ...
- mybatis配置文件祥解(mybatis.xml)
以下是mybatis.xml文件,提倡放在src目录下,文件名任意 <?xml version="1.0" encoding="UTF-8"?> & ...
- easyUI之练习
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC & ...
- WEditor使用方法
APP的定位方式有: 1. Appium Desktop工具里的Inspector 2. /tools/bin/uiautomatorviewer.bat 最近发现在一个更好用的定位工具: Wedit ...
- java程序引用别的jar包打包方法
参考文章:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 目前亲测:eclipse打包: 1.不需要手动写mainfest.inf 先利用ecl ...
- CentOS 7 最小化安装后的注意事项
http://blog.csdn.net/f_srion/article/details/54910943 在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装,而最小 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理
笔记 7.Eureka服务注册中心配置控制台问题处理 简介:讲解服务注册中心管理后台,(后续还会细讲) 问题:eureka管理后台出现一串红色字体:是警告,说明有服务上线率低 EMERGENC ...
- 一百零七:CMS系统之权限和角色模型定义
模型与权限关系映射表 class CMSPersmission: """ 权限管理映射 """ # 255的二进制方式来表示 1111 11 ...