微信小程序中使用Base64编码解码

本文档介绍了如何创建和修改base64.js文件,提供了对Unicode字符的支持,并增加了字符串方法的便捷操作。通过'encodeURI'和'fromBase64'等扩展,提升了Base64编码的实用性和兼容性。
摘要由CSDN通过智能技术生成

创建js-base64.js文件

(function(global) {
   
  'use strict';
  var global = global || {
   };
  var _Base64 = global.Base64;
  var version = "1.0.0";
  var buffer;
  var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  var b64tab = function(bin) {
   
      var t = {
   };
      for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
      return t;
  }(b64chars);
  var fromCharCode = String.fromCharCode;
  // encoder stuff
  var cb_utob = function(c) {
   
      if (c.length < 2) {
   
          var cc = c.charCodeAt(0);
          return cc < 0x80 ? c :
              cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6)) +
                  fromCharCode(0x80 | (cc & 0x3f))) :
              (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +
                  fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +
                  fromCharCode(0x80 | (cc & 0x3f)));
      } else {
   
          var cc = 0x10000 +
              (c.charCodeAt(0) - 0xD800) * 0x400 +
              (c.charCodeAt(1) - 0xDC00);
          return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) +
              fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) +
              fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +
              fromCharCode(0x80 | (cc & 0x3f)));
      }
  };
  var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
  var utob = function(u) {
   
      return u.replace(re_utob, cb_utob);
  };
  var cb_encode = function(ccc) {
   
      var padlen = [0, 2, 1][ccc.length % 3],
          ord = ccc.charCodeAt(0) << 16 |
          ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |
          ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
          chars = [
              b64chars.charAt(ord >>> 18),
              b64chars.charAt((ord >>> 12) & 63),
              padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
              padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
          ];
      return chars.join('');
  };
  var btoa = global.btoa ? function(b) {
   
      return global.btoa(b);
  } : function(b) {
   
      return b.replace(/[\s\S]{1,3}/g, cb_encode);
  };
  var _encode = buffer ? function(u) {
   
          return (u.constructor === buffer.constructor ? u : new buffer(u))
              .toString('base64')
      } :
      function(u) {
    return btoa(utob(u)) };
  var encode = function(u, urisafe) {
   
      return !urisafe ?
          _encode(String(u)) :
          _encode<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值