国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了【JS】實現(xiàn) Base64 編碼和解碼(及中文亂碼問題)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、原生實現(xiàn)

  • JavaScript 定義了兩個與 Base64 相關(guān)的全局方法。
1. btoa():字符串或二進制值轉(zhuǎn)為 Base64 編碼。
2. atob():把 Base64 編碼轉(zhuǎn)為原來的字符。
  • 遇到中文編碼需要先做一次 URI 組件編碼或?qū)獯a后的內(nèi)容進行 URI 解碼
1. encodeURIComponent():結(jié)合 btoa 使用
2. decodeURIComponent():結(jié)合 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,然后我們將百分比編碼轉(zhuǎn)換為原始字節(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'))	// 一顆不甘墜落的流星

文章來源地址http://www.zghlxwxcb.cn/news/detail-615055.html

到了這里,關(guān)于【JS】實現(xiàn) Base64 編碼和解碼(及中文亂碼問題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JS基于base64編碼加密解密文本和圖片(修訂)

    JS基于base64編碼加密解密文本和圖片(修訂)

    ? 密碼學,體系太龐大了,常見的加密解密算法很多,這里僅介紹采用base64實現(xiàn)的加密解密的方法。 嚴格地說base64不是加密算法,他只是一種編碼方式,是一種用64個字符來表示任意二進制數(shù)據(jù)的方法。詳情可參見其它資料。 Base64編碼具有不可讀性,需要解碼后才能閱讀。

    2024年02月07日
    瀏覽(30)
  • opensl學習——base16編碼解碼、base64編碼解碼、ASCII碼表、擴展ASCII碼

    opensl學習——base16編碼解碼、base64編碼解碼、ASCII碼表、擴展ASCII碼

    ASCII(American Standard Code for Information Interchange,美國信息互換標準代碼)是一套基于拉丁字母的字符編碼,共收錄了 128 個字符,用一個字節(jié)就可以存儲,它等同于國際標準 ISO/IEC 646。 ASCII 編碼于 1967 年第一次發(fā)布,最后一次更新是在 1986 年,迄今為止共收錄了 128 個字符,包

    2024年02月07日
    瀏覽(43)
  • java base64編碼和解碼

    Base64 編碼會將字符串編碼得到一個含有 A-Za-z0-9+/ 的字符串。 base64 編碼和解碼網(wǎng)上有些地方稱為 base64 加密和解密,這是不準確的。base64 是不能用來加密和解密的,它只是一種編碼解碼方式,不能用于加密和解密,如果你想加密和解密可以選擇如 AES、RSA 等加密算法。 標準的

    2024年02月15日
    瀏覽(32)
  • Python中的Base64編碼和解碼

    Python3中Base64編碼和解碼,使用的是base64模塊中的b64encode 和 b64decode方法,關(guān)于怎么使用,首先查看源碼中的說明: 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日
    瀏覽(21)
  • Java - 將base64編碼解碼成圖片

    Java - 將base64編碼解碼成圖片

    為了方便測試,我們可以使用一個圖片編碼網(wǎng)站,將圖片進行base64編碼 解密的代碼如下 因為圖片的Base64字符串非常大,動輒幾百K,所以不能直接使用 String base64 = \\\"${該圖片的base64串}\\\" 進行測試,否則編譯器會報錯 Java \\\"constant string too long\\\" compile error\\\" 。這個錯誤的出現(xiàn),是因

    2023年04月09日
    瀏覽(28)
  • 前端Base64 編碼和解碼的使用方法

    使用 Base64 類從 ‘js-base64’ 庫進行 Base64 編碼和解碼 vue: 使用 npm 或 yarn 包管理器來安裝‘js-base64’ 庫 原生: 通過 vue: 導入 Base64 類: 或者: vue: Base64 編碼的使用示例: Base64 解碼的使用示例: 或者,導入 encode 和 decode 函數(shù): Base64 編碼的使用示例: Base64 解碼的使用示例

    2024年02月07日
    瀏覽(26)
  • php的Url 安全的base64編碼解碼類

    2024年02月04日
    瀏覽(23)
  • base64與BytesIO圖片進行編碼、解碼;api調(diào)用

    base64與BytesIO圖片進行編碼、解碼;api調(diào)用

    io.BytesIO 和 Base64 編碼都是用于在內(nèi)存中處理二進制數(shù)據(jù)的方法,但它們的目的和使用場景有所不同。 1) io.BytesIO io.BytesIO 是 Python io 庫中的一個類,它提供了一個在內(nèi)存中處理二進制數(shù)據(jù)的接口,模擬了一個文件對象。它允許你像操作文件一樣操作內(nèi)存中的二進制數(shù)據(jù),這對

    2024年01月24日
    瀏覽(29)
  • Linux系統(tǒng)下使用命令行進行Base64編碼和解碼

    大家知道,編碼是將數(shù)據(jù)轉(zhuǎn)換為有效傳輸或存儲所需格式的過程。相反,解碼是將編碼數(shù)據(jù)轉(zhuǎn)換回其原始格式的過程。今天在這里向大家介紹一下 Base64 編碼和解碼,以便大家理解與學習。 Base64 是將二進制數(shù)據(jù)轉(zhuǎn)換為 ASCII 的編碼方式之一。通常,當二進制數(shù)據(jù)傳輸?shù)綗o法正

    2024年02月11日
    瀏覽(39)
  • js解決url傳遞中文參數(shù)亂碼問題

    js解決url傳遞中文參數(shù)亂碼問題

    做后臺管理系統(tǒng)的時候,出現(xiàn)了一個bug:點擊“導出數(shù)據(jù)”按鈕,打開文件里面是空的。 亂碼的url 正確的url 1.文件為空,應(yīng)該是請求的url路徑不對,顯示一個空的模板即沒帶參數(shù),因此可以判斷是參數(shù)有誤; 2.控制臺打出url,可以看出是參數(shù)中文亂碼; 3.怎樣解決中文亂碼問題

    2023年04月19日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包