【JS】实现 Base64 编码和解码(及中文乱码问题)

这篇具有很好参考价值的文章主要介绍了【JS】实现 Base64 编码和解码(及中文乱码问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、原生实现

  • JavaScript 定义了两个与 Base64 相关的全局方法。
1. btoa():字符串或二进制值转为 Base64 编码。
2. atob():把 Base64 编码转为原来的字符。
  • 遇到中文编码需要先做一次 URI 组件编码或对解码后的内容进行 URI 解码
1. encodeURIComponent():结合 btoa 使用
2. decodeURIComponent():结合 atob 使用
  • 示例:Base64 编码
// btoa() 相当于 window.btoa(),encodeURIComponent 同理
const str = 'test'
const encode = btoa(encodeURIComponent(str))
console.log(encode)	// dGVzdA==
  • 示例:Base64 解码
// atob() 相当于 window.atob(),decodeURIComponent 同理
const str = 'dGVzdA=='
const decode = decodeURIComponent(atob(str))
console.log(decode)	// test
  • 中文乱码处理方法:
const Base64 = {
    encode(str) {
        // 首先,我们使用 encodeURIComponent 来获得百分比编码的UTF-8,然后我们将百分比编码转换为原始字节,最后存储到btoa里面
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode(Number('0x' + p1));
            }));
    },
    decode(str) {
        // 过程:从字节流到百分比编码,再到原始字符串
        return decodeURIComponent(atob(str).split('').map(function (c) {
            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
        }).join(''));
    }
}
let encoded = Base64.encode("一颗不甘坠落的流星"); 	// "5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif"
let decoded = Base64.decode(encoded); 				// "一颗不甘坠落的流星"

二、插件实现

  • 按照 Base64 插件:编解码:js-base64,判断是否是Base64编码格式:is-base64
npm i js-base64
npm i is-base64
  • 插件使用
import isBase64 from 'is-base64';
import { Base64 } from 'js-base64';

// 封装解码函数
const base64ToStr = (base64Str: string): string => {
  if (isBase64(base64Str)) {
    return Base64.decode(base64Str);
  }
  return base64Str;
};
// 封装编码函数
export const strToBase64 = (str: string): string => Base64.encode(str);

console.log(strToBase64('一颗不甘坠落的流星'))	// 5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif
console.log(base64ToStr('5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif'))	// 一颗不甘坠落的流星

文章来源地址https://www.toymoban.com/news/detail-615055.html

到了这里,关于【JS】实现 Base64 编码和解码(及中文乱码问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JS基于base64编码加密解密文本和图片(修订)

    ​ 密码学,体系太庞大了,常见的加密解密算法很多,这里仅介绍采用base64实现的加密解密的方法。 严格地说base64不是加密算法,他只是一种编码方式,是一种用64个字符来表示任意二进制数据的方法。详情可参见其它资料。 Base64编码具有不可读性,需要解码后才能阅读。

    2024年02月07日
    浏览(39)
  • opensl学习——base16编码解码、base64编码解码、ASCII码表、扩展ASCII码

    ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。 ASCII 编码于 1967 年第一次发布,最后一次更新是在 1986 年,迄今为止共收录了 128 个字符,包

    2024年02月07日
    浏览(37)
  • java base64编码和解码

    Base64 编码会将字符串编码得到一个含有 A-Za-z0-9+/ 的字符串。 base64 编码和解码网上有些地方称为 base64 加密和解密,这是不准确的。base64 是不能用来加密和解密的,它只是一种编码解码方式,不能用于加密和解密,如果你想加密和解密可以选择如 AES、RSA 等加密算法。 标准的

    2024年02月15日
    浏览(30)
  • Python中的Base64编码和解码

    Python3中Base64编码和解码,使用的是base64模块中的b64encode 和 b64decode方法,关于怎么使用,首先查看源码中的说明: b64encode : Encode the bytes-like object s using Base64 and return a bytes object b64decode : Decode the Base64 encoded bytes-like object or ASCII string s… The result is returned as a bytes object. 要点

    2024年02月13日
    浏览(30)
  • Java - 将base64编码解码成图片

    为了方便测试,我们可以使用一个图片编码网站,将图片进行base64编码 解密的代码如下 因为图片的Base64字符串非常大,动辄几百K,所以不能直接使用 String base64 = \\\"${该图片的base64串}\\\" 进行测试,否则编译器会报错 Java \\\"constant string too long\\\" compile error\\\" 。这个错误的出现,是因

    2023年04月09日
    浏览(38)
  • 前端Base64 编码和解码的使用方法

    使用 Base64 类从 ‘js-base64’ 库进行 Base64 编码和解码 vue: 使用 npm 或 yarn 包管理器来安装‘js-base64’ 库 原生: 通过 vue: 导入 Base64 类: 或者: vue: Base64 编码的使用示例: Base64 解码的使用示例: 或者,导入 encode 和 decode 函数: Base64 编码的使用示例: Base64 解码的使用示例

    2024年02月07日
    浏览(33)
  • base64与BytesIO图片进行编码、解码;api调用

    io.BytesIO 和 Base64 编码都是用于在内存中处理二进制数据的方法,但它们的目的和使用场景有所不同。 1) io.BytesIO io.BytesIO 是 Python io 库中的一个类,它提供了一个在内存中处理二进制数据的接口,模拟了一个文件对象。它允许你像操作文件一样操作内存中的二进制数据,这对

    2024年01月24日
    浏览(46)
  • php的Url 安全的base64编码解码类

    2024年02月04日
    浏览(33)
  • Linux系统下使用命令行进行Base64编码和解码

    大家知道,编码是将数据转换为有效传输或存储所需格式的过程。相反,解码是将编码数据转换回其原始格式的过程。今天在这里向大家介绍一下 Base64 编码和解码,以便大家理解与学习。 Base64 是将二进制数据转换为 ASCII 的编码方式之一。通常,当二进制数据传输到无法正

    2024年02月11日
    浏览(40)
  • js解决url传递中文参数乱码问题

    做后台管理系统的时候,出现了一个bug:点击“导出数据”按钮,打开文件里面是空的。 乱码的url 正确的url 1.文件为空,应该是请求的url路径不对,显示一个空的模板即没带参数,因此可以判断是参数有误; 2.控制台打出url,可以看出是参数中文乱码; 3.怎样解决中文乱码问题

    2023年04月19日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包