欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、原生實現(xiàn)

  • 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,然后我們將百分比編碼轉換為原始字節(jié),最后存儲到btoa里面
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode(Number('0x' + p1));
            }));
    },
    decode(str) {
        // 過程:從字節(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); 				// "一顆不甘墜落的流星"

二、插件實現(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'))	// 一顆不甘墜落的流星

總結 

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

相關文章

  • JavaScript兼容瀏覽器FF/IE技巧

    JavaScript兼容瀏覽器FF/IE技巧

    本文給大家分享的是一個JavaScript兼容火狐瀏覽器與IE瀏覽器的一個小技巧,非常的簡單實用,有需要的小伙伴可以參考下
    2016-08-08
  • javascript中alert()與console.log()的區(qū)別

    javascript中alert()與console.log()的區(qū)別

    我們在做js調試的時候使用 alert 可以顯示信息,調試程序,alert 彈出窗口會中斷程序, 如果要在循環(huán)中顯示信息,手點擊關閉窗口都累死。而且 alert 顯示對象永遠顯示為[object ]。 自己寫的 log 雖然可以顯示一些 object 信息,但很多功能支持都沒有 console 好
    2015-08-08
  • 設置點擊文本框或圖片彈出日歷控件的實現(xiàn)代碼

    設置點擊文本框或圖片彈出日歷控件的實現(xiàn)代碼

    下面小編就為大家?guī)硪黄O置點擊文本框或圖片彈出日歷控件的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • 微信小程序實現(xiàn)下拉菜單切換效果

    微信小程序實現(xiàn)下拉菜單切換效果

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)下拉菜單切換效果,篩選條件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼

    微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼

    這篇文章主要介紹了微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • electron實現(xiàn)圖片的另存為功能

    electron實現(xiàn)圖片的另存為功能

    本文主要介紹了在electron中如何實現(xiàn)圖片的另存為操作,包括另存為按鈕事件的編寫,getImageType和saveAsPicture的主要代碼,以及Electron進程與渲染進程的交互效果,希望能為使用electron的開發(fā)者提供幫助
    2024-10-10
  • Javascript循環(huán)綁定事件的示例代碼

    Javascript循環(huán)綁定事件的示例代碼

    我們先看一個關于Javascript利用循環(huán)綁定事件的例子
    2008-10-10
  • JavaScript

    JavaScript"模擬事件"的注意要點詳解

    今天小編就為大家分享一篇關于JavaScript"模擬事件"的注意要點詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • JS 如何獲取radio選中后的值及不選擇取radio的值

    JS 如何獲取radio選中后的值及不選擇取radio的值

    獲取radio選中后的值,這在提交頁面經常會使用到的,在本文為大家介紹下不選擇也能獲取radio的值,具體實現(xiàn)如下,感興趣的朋友可以參考下
    2013-10-10
  • 微信小程序排坑指南詳解

    微信小程序排坑指南詳解

    這篇文章主要為大家詳細介紹了微信小程序排坑指南,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論