成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Base64 JS編碼/解碼

why_rookie / 705人閱讀

摘要:注意點(diǎn)如果所示,上面說(shuō)到的編碼解碼方法并不支持中文,因?yàn)樗鼈冎恢С志幋a。轉(zhuǎn)換編碼中文進(jìn)行轉(zhuǎn)碼之后在編碼。最優(yōu)方案在某些情況下,用了上面的方法也會(huì)出現(xiàn)中文亂碼的情況,如獲取到的音樂(lè)歌詞解析出來(lái)的歌詞等。

為什么要編碼

簡(jiǎn)單粗暴的解釋就是為了數(shù)據(jù)的安全性。

編碼/解碼常用方法(僅針對(duì)Base64)

編碼

我們一般使用 window.btoa() 對(duì)原始數(shù)據(jù)進(jìn)行編碼。

解碼

我們一般使用 window.atob() 對(duì)編碼過(guò)后的數(shù)據(jù)進(jìn)行編碼。

注意點(diǎn)

如果所示,上面說(shuō)到的編碼/解碼方法并不支持中文,因?yàn)樗鼈冎恢С?b>ASCII 編碼。

但是在實(shí)際開(kāi)發(fā)中,前后端要傳遞的數(shù)據(jù)通常不可能只有英文或者數(shù)字的。那么一旦我們要編碼或者說(shuō)解碼的時(shí)候出現(xiàn)了中文字符串怎么辦呢?

由于btoa()atob()只支持ASCII 編碼,所以我們可以先將帶中文的字符串轉(zhuǎn)碼成ASCII 編碼,這里要用到兩種方法,encodeURIComponentdecodeURIComponent, 然后再進(jìn)行編碼/解碼操作,這樣就可以解決不支持中文的問(wèn)題。

轉(zhuǎn)換 ASCII 編碼

   window.btoa(encodeURIComponent("中文")) 進(jìn)行轉(zhuǎn)碼之后在編碼。

     decodeURIComponent(window.atob("JUU0JUI4JUFEJUU2JTk2JTg3"))
     對(duì)數(shù)據(jù)進(jìn)行解碼。

最優(yōu)方案

在某些情況下,用了上面的方法也會(huì)出現(xiàn)中文亂碼的情況,如GitHub API獲取到的README、QQ音樂(lè)歌詞API解析出來(lái)的歌詞等。

如果出現(xiàn)了這種情況,我們可以使用 unescape()escape() 方法對(duì)做過(guò)解碼/編碼處理的數(shù)據(jù)進(jìn)行utf-8再解碼/編碼。語(yǔ)法如下:

window.btoa(unescape(encodeURIComponent(str))) //編碼

decodeURIComponent(escape(window.atob(str)))   // 解碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97475.html

相關(guān)文章

  • 前端開(kāi)發(fā)中的字符編碼

    摘要:當(dāng)然,也可自己寫(xiě)一個(gè)轉(zhuǎn)換函數(shù),按照一定規(guī)則便行為編碼的字節(jié),如下例中國(guó)結(jié)果中國(guó)結(jié)果結(jié)果通過(guò)簡(jiǎn)單的函數(shù),就可以完成編碼到編碼的轉(zhuǎn)換,進(jìn)而完成寬字節(jié)字符到編碼的轉(zhuǎn)換。 前端開(kāi)發(fā)過(guò)程中會(huì)接觸各種各樣的編碼,比較常見(jiàn)的主要是 UTF-8 和 HTML 實(shí)體編碼,但是 web 前端的世界卻不止這兩種編碼,而且編碼的選擇也會(huì)造成一定的問(wèn)題,如前后端開(kāi)發(fā)過(guò)程中不同編碼的兼容、多字節(jié)編碼可能會(huì)造成的 ...

    Rindia 評(píng)論0 收藏0
  • Java Base64 編碼解碼方案總結(jié)

    摘要:是一種能將任意資料用種字元組合成字串的方法,而這個(gè)資料和字串資料彼此之間是可以互相轉(zhuǎn)換的,十分方便。實(shí)際測(cè)試編碼與解碼速度的話,提供的,要比套件提供的還要快至少倍,比提供的還要快至少倍。 Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個(gè)Binary資料和字串資料彼此之間是可以互相轉(zhuǎn)換的,十分方便。在實(shí)際應(yīng)用上,Base64除了能將Binary資料可視化之外...

    sevi_stuo 評(píng)論0 收藏0
  • python模塊之base64

    摘要:模塊提供了在二進(jìn)制數(shù)據(jù)和可打印字符間編解碼的功能,包括中定義的等編碼??蓱?yīng)用于生成安全的或文件系統(tǒng)編碼場(chǎng)景中。等同于對(duì)類字節(jié)對(duì)象或純字符組成的字符串進(jìn)行標(biāo)準(zhǔn)解碼,返回解碼后的字節(jié)序列。 base64模塊提供了在二進(jìn)制數(shù)據(jù)和可打印ASCII字符間編解碼的功能,包括RFC3548中定義的Base16, Base32, Base64, Ascii85, Base85等編碼。 RFC3548中...

    CoderDock 評(píng)論0 收藏0
  • Java程序員遇上字符亂碼2-容易混淆的兩種編碼類別

    摘要:字符集編碼就是對(duì)字符根據(jù)不同字符集中對(duì)應(yīng)的格式進(jìn)行編碼解碼,這個(gè)大家都好理解。下面詳細(xì)說(shuō)說(shuō),以編碼解碼和編碼解碼為例。 《來(lái)自羅志曉的筆記:http://note.youdao.com/notesh...》我們平時(shí)老說(shuō)的編碼解碼,很多人都只知道 字符集編碼解碼。其實(shí)除了字符集編碼解碼,常見(jiàn)的還有另一類,如 Url編碼解碼、Base64編碼解碼。這兩類編碼的原理是完全不一樣的,如果沒(méi)有了...

    hidogs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<