最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS如何實(shí)現(xiàn)Base64編碼和解碼(及中文亂碼問(wèn)題)

 更新時(shí)間:2023年10月12日 10:52:00   作者:一顆不甘墜落的流星  
這篇文章主要給大家介紹了關(guān)于JS如何實(shí)現(xiàn)Base64編碼和解碼及中文亂碼問(wèn)題的相關(guān)資料,Base64編碼是一種常用的將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本數(shù)據(jù)的方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、原生實(shí)現(xiàn)

  • JavaScript 定義了兩個(gè)與 Base64 相關(guān)的全局方法。

1. btoa():字符串或二進(jìn)制值轉(zhuǎn)為 Base64 編碼。
2. atob():把 Base64 編碼轉(zhuǎn)為原來(lái)的字符。

  • 遇到中文編碼需要先做一次 URI 組件編碼或?qū)獯a后的內(nèi)容進(jìn)行 URI 解碼

1. encodeURIComponent():結(jié)合 btoa 使用
2. decodeURIComponent():結(jié)合 atob 使用

  • 示例:Base64 編碼
// btoa() 相當(dāng)于 window.btoa(),encodeURIComponent 同理
const str = 'test'
const encode = btoa(encodeURIComponent(str))
console.log(encode)	// dGVzdA==
  • 示例:Base64 解碼
// atob() 相當(dāng)于 window.atob(),decodeURIComponent 同理
const str = 'dGVzdA=='
const decode = decodeURIComponent(atob(str))
console.log(decode)	// test
  • 中文亂碼處理方法:
const Base64 = {
    encode(str) {
        // 首先,我們使用 encodeURIComponent 來(lái)獲得百分比編碼的UTF-8,然后我們將百分比編碼轉(zhuǎn)換為原始字節(jié),最后存儲(chǔ)到btoa里面
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode(Number('0x' + p1));
            }));
    },
    decode(str) {
        // 過(guò)程:從字節(jié)流到百分比編碼,再到原始字符串
        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); 				// "一顆不甘墜落的流星"

二、插件實(shí)現(xiàn)

  • 按照 Base64 插件:編解碼:js-base64,判斷是否是Base64編碼格式:is-base64
npm i js-base64
npm i is-base64
  • 插件使用
import isBase64 from 'is-base64';
import { Base64 } from 'js-base64';
// 封裝解碼函數(shù)
const base64ToStr = (base64Str: string): string => {
  if (isBase64(base64Str)) {
    return Base64.decode(base64Str);
  }
  return base64Str;
};
// 封裝編碼函數(shù)
export const strToBase64 = (str: string): string => Base64.encode(str);
console.log(strToBase64('一顆不甘墜落的流星'))	// 5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif
console.log(base64ToStr('5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif'))	// 一顆不甘墜落的流星

總結(jié) 

到此這篇關(guān)于JS如何實(shí)現(xiàn)Base64編碼和解碼及中文亂碼問(wèn)題的文章就介紹到這了,更多相關(guān)JS Base64編碼和解碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

彭山县| 平和县| 沽源县| 汶川县| 齐河县| 兰坪| 安国市| 莱州市| 吉安市| 清远市| 兴山县| 肥城市| 工布江达县| 富民县| 高密市| 西城区| 海南省| 林甸县| 宣城市| 泰来县| 阿拉善右旗| 道真| 浪卡子县| 贡觉县| 大丰市| 宁南县| 五台县| 临武县| 南通市| 肇庆市| 银川市| 锡林郭勒盟| 呼玛县| 田林县| 普兰店市| 荔波县| 运城市| 奉化市| 广水市| 津南区| 辉南县|