摘要:注意點如果所示,上面說到的編碼解碼方法并不支持中文,因為它們只支持編碼。轉換編碼中文進行轉碼之后在編碼。最優(yōu)方案在某些情況下,用了上面的方法也會出現(xiàn)中文亂碼的情況,如獲取到的音樂歌詞解析出來的歌詞等。
為什么要編碼
簡單粗暴的解釋就是為了數(shù)據(jù)的安全性。
編碼/解碼常用方法(僅針對Base64)編碼
我們一般使用 window.btoa() 對原始數(shù)據(jù)進行編碼。
解碼
我們一般使用 window.atob() 對編碼過后的數(shù)據(jù)進行編碼。
注意點
如果所示,上面說到的編碼/解碼方法并不支持中文,因為它們只支持ASCII 編碼。
但是在實際開發(fā)中,前后端要傳遞的數(shù)據(jù)通常不可能只有英文或者數(shù)字的。那么一旦我們要編碼或者說解碼的時候出現(xiàn)了中文字符串怎么辦呢?
由于btoa()跟atob()只支持ASCII 編碼,所以我們可以先將帶中文的字符串轉碼成ASCII 編碼,這里要用到兩種方法,encodeURIComponent 與 decodeURIComponent, 然后再進行編碼/解碼操作,這樣就可以解決不支持中文的問題。
轉換 ASCII 編碼
window.btoa(encodeURIComponent("中文")) 進行轉碼之后在編碼。
decodeURIComponent(window.atob("JUU0JUI4JUFEJUU2JTk2JTg3")) 對數(shù)據(jù)進行解碼。
最優(yōu)方案
在某些情況下,用了上面的方法也會出現(xiàn)中文亂碼的情況,如GitHub API獲取到的README、QQ音樂歌詞API解析出來的歌詞等。
如果出現(xiàn)了這種情況,我們可以使用 unescape() 跟 escape() 方法對做過解碼/編碼處理的數(shù)據(jù)進行utf-8再解碼/編碼。語法如下:
window.btoa(unescape(encodeURIComponent(str))) //編碼 decodeURIComponent(escape(window.atob(str))) // 解碼
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97475.html
摘要:當然,也可自己寫一個轉換函數(shù),按照一定規(guī)則便行為編碼的字節(jié),如下例中國結果中國結果結果通過簡單的函數(shù),就可以完成編碼到編碼的轉換,進而完成寬字節(jié)字符到編碼的轉換。 前端開發(fā)過程中會接觸各種各樣的編碼,比較常見的主要是 UTF-8 和 HTML 實體編碼,但是 web 前端的世界卻不止這兩種編碼,而且編碼的選擇也會造成一定的問題,如前后端開發(fā)過程中不同編碼的兼容、多字節(jié)編碼可能會造成的 ...
摘要:是一種能將任意資料用種字元組合成字串的方法,而這個資料和字串資料彼此之間是可以互相轉換的,十分方便。實際測試編碼與解碼速度的話,提供的,要比套件提供的還要快至少倍,比提供的還要快至少倍。 Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Binary資料和字串資料彼此之間是可以互相轉換的,十分方便。在實際應用上,Base64除了能將Binary資料可視化之外...
摘要:模塊提供了在二進制數(shù)據(jù)和可打印字符間編解碼的功能,包括中定義的等編碼。可應用于生成安全的或文件系統(tǒng)編碼場景中。等同于對類字節(jié)對象或純字符組成的字符串進行標準解碼,返回解碼后的字節(jié)序列。 base64模塊提供了在二進制數(shù)據(jù)和可打印ASCII字符間編解碼的功能,包括RFC3548中定義的Base16, Base32, Base64, Ascii85, Base85等編碼。 RFC3548中...
摘要:字符集編碼就是對字符根據(jù)不同字符集中對應的格式進行編碼解碼,這個大家都好理解。下面詳細說說,以編碼解碼和編碼解碼為例。 《來自羅志曉的筆記:http://note.youdao.com/notesh...》我們平時老說的編碼解碼,很多人都只知道 字符集編碼解碼。其實除了字符集編碼解碼,常見的還有另一類,如 Url編碼解碼、Base64編碼解碼。這兩類編碼的原理是完全不一樣的,如果沒有了...
閱讀 2772·2021-11-19 11:30
閱讀 3058·2021-11-15 11:39
閱讀 1782·2021-08-03 14:03
閱讀 1985·2019-08-30 14:18
閱讀 2043·2019-08-30 11:16
閱讀 2149·2019-08-29 17:23
閱讀 2597·2019-08-28 18:06
閱讀 2533·2019-08-26 12:22