javascript unicode和base64的编码与解码

javascript定义了6个全局方法用于Unicode字符串编码和解码
escape() : 使用转义序列替换某些字符来对字符串进行编码
unescape() : 对使用escape()编码的字符串进行解码
encodeURI() : 通过转义某些字符对URL进行编码
decodeURI() : 对使用encodeURI() 方法编码的字符串进行解码
encodeURIComponent() : 通过某些转移字符对URL的组件进行编码
decodeURIComponent() : 对使用encodeURIComponent() 方法编码的字符串进行解码

escape() 和 unescape()
escape() 方法能够把 ASCII 之外的所有字符转换为 %xx 或 %uxxxx(x表示十六进制的数字)的转义序列。从 \u000 到 \u00ff 的 Unicode 字符由转义序列 %xx 替代,其他所有 Unicode 字符由 %uxxxx 序列替代

 {
   let str = 'hello world; 你好,世界';
   str = escape(str)
   console.log(str);
   str = unescape(str)
   console.log(str);
 }

encodeURI() 和 decodeURI()
ECMAScript v3.0 版本推荐使用 encodeURI() 和 encodeURIComponent() 方法代替 escape() 方法,使用 decodeURI() 和 decodeURIComponent() 方法代替 unescape() 方法。

 {
   let str = 'hello china; 你好,中国'
   str = encodeURI(str)
   console.log(str);
   str = decodeURI(str)
   console.log(str);
 }

encodeURIComponent() 和 decodeURIComponent()
encodeURIComponent() 与 encodeURI() 方法不同。它们的主要区别在于,encodeURIComponent() 方法假定参数是 URI 的一部分,例如,协议、主机名、路径或查询字符串。因此,它将转义用于分隔 URI 各个部分的标点符号。而 encodeURI() 方法仅把它们视为普通的 ASCII 字符,并没有转换。

  {
    let urlStr = 'http://c.biancheng.net/view/5602.html'
    urlStr = encodeURIComponent(urlStr)
    console.log(urlStr);
    urlStr = decodeURIComponent(urlStr)
    console.log(urlStr);
  }

Base64编码和解码 (nodejs不支持)
Base64 是一种编码方式,可以将任意字符(包括二进制字符流)转成可打印字符。JavaScript 定义了两个与 Base64 相关的全局方法
btoa() : 字符串或二进制值转化为Base64编码
atob() : 把Base64编码转化为原来的字符
注意: Base64 方法不能够操作非 ASCII 字符。 要将非 ASCII 码字符转为 Base64 编码,必须使用上一节介绍的方法把 Unicode 双字节字符串转换为 ASCII 字符表示,再使用这两个方法。

 function b64Encode( str ) {
     return btoa(encodeURIComponent(str))
   }
   function b64Decode( str ) {
     return decodeURIComponent(atob(str))
   }

   {
    let b64Str = 'hello ; 你好'
    b64Str = b64Encode(b64Str)
    console.log(b64Str);
    b64Str = b64Decode(b64Str)
    console.log(b64Str);
   }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值