一文詳解JavaScript的轉(zhuǎn)碼方式
更新時間:2023年09月07日 08:32:48 作者:編程三昧
JavaScript 轉(zhuǎn)碼是指將 JavaScript 代碼從一種編碼方式轉(zhuǎn)換為另一種編碼方式,常見的轉(zhuǎn)碼方式包括 URL 編碼和 Base64 編碼,解碼是前端比較常見的一種操作,本文就給大家講講JavaScript轉(zhuǎn)碼方式
解碼是前端比較常見的一種操作。
特殊符號是否編碼
- escape: 不編碼ASCII字母、數(shù)字、標點符號"@ * _ + - . /",對其他所有字符進行編碼。
- encodeURI: 不編碼ASCII字母、數(shù)字、標點符號"; / ? : @ & = + $ , #",對其他所有字符進行編碼。
- encodeURIComponent: 對所有字符進行編碼
轉(zhuǎn)碼結(jié)果
- escape: 輸出字符的Unicode編碼值
- encodeURI: 輸出符號的utf-8形式,并且在每個字節(jié)前加上%
- encodeURIComponent: 輸出符號的utf-8形式,并且在每個字節(jié)前加上%
tips:
- 但是我們知道,網(wǎng)頁在提交表單的時候,如果有空格,則會被轉(zhuǎn)化為+字符。服務(wù)器處理數(shù)據(jù)的時候,會把+號處理成空格。
注意點
為何解碼最好解兩次
例如筆者常用的解碼方式
function decode(str) { var r = ''; try { r = decodeURIComponent(decodeURIComponent(str)); }catch(e){ try { r = decodeURIComponent(str); } catch(e) { try { r = unescape(str); //Unicode }catch(e) { r = str; } } } return r; }
- 為什么捕抓異常: 其實decodeURIComponent是會有時候會爆異常的..這個屬于bug
- 為什么要嘗試兩次編碼、一次編碼、和無編碼: 因為防止服務(wù)端encode兩次、一次、或者無編碼
- 為什么要最后unescape,因為只有這個方法能解析Unicode編碼
到此這篇關(guān)于一文詳解JavaScript的轉(zhuǎn)碼方式的文章就介紹到這了,更多相關(guān)JavaScript轉(zhuǎn)碼方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法小結(jié)
在做開發(fā)時會對不同的時間格式進行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01javascript實現(xiàn)將數(shù)字轉(zhuǎn)成千分位的方法小結(jié)【5種方式】
這篇文章主要介紹了javascript實現(xiàn)將數(shù)字轉(zhuǎn)成千分位的方法,結(jié)合實例形式分析了5種常用的數(shù)字轉(zhuǎn)換的常用方法,涉及字符串與正則操作的相關(guān)技巧,需要的朋友可以參考下2016-12-12JS實現(xiàn)二叉查找樹的建立以及一些遍歷方法實現(xiàn)
本篇文章主要介紹了JS實現(xiàn)二叉查找樹的建立以及一些遍歷方法實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04關(guān)于javascript解決閉包漏洞的一個問題詳解
閉包在JavaScript高級程序設(shè)計(第3版)中是這樣描述:閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù),下面這篇文章主要給大家介紹了關(guān)于javascript解決閉包漏洞的一個問題的相關(guān)資料,需要的朋友可以參考下2022-11-11微信小程序?qū)崿F(xiàn)發(fā)送短信驗證碼倒計時
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)發(fā)送短信驗證碼倒計時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08