Javascript 字符串解碼可以幫助我們將編碼后的字符串重新轉換為原始字符串。本文將會詳細介紹解碼中的常見函數以及使用方法。
首先,我們需要了解什么叫編碼后的字符串。編碼后的字符串是指使用一定的算法將字符串中的字符轉換為一些其它字符,通常是 ASCII 碼。最常見的編碼方式是 URL 編碼,其中使用 % 符號加上兩個十六進制數字代表某個字符。比如,%20 代表空格字符。如果我們想將這些編碼后的字符串轉換為原始字符串,就需要使用解碼的方法。
下面是常見的解碼函數:
decodeURI() decodeURIComponent()
decodeURI() 函數用于解碼完整的 URL,而 decodeURIComponent() 函數用于解碼 URL 中的非 ASCII 字符。它們的語法都很簡單,只需將需要解碼的字符串作為參數傳入即可:
var uri = "http://www.example.com/my page.html"; var decodedURI = decodeURI(uri); console.log(decodedURI); var uriComponent = "http%3A%2F%2Fwww.example.com%2Fmy%20page.html"; var decodedURIComponent = decodeURIComponent(uriComponent); console.log(decodedURIComponent);
上面的代碼中,我們將一個編碼后的 URL 和一個編碼后的 URL 組件作為參數傳入了 decodeURI() 和 decodeURIComponent() 函數。執行結果分別為 "http://www.example.com/my page.html" 和 "http://www.example.com/my page.html"。
在實際開發中,如果我們需要解析 URL 中的參數,通常會將參數以鍵值對的方式通過 & 符號分隔開來,例如:
var uri = "http://www.example.com/search?q=javascript&count=10";
如果我們需要將這個 URL 中的參數解析成一個對象,就需要使用其它的函數。下面是常見的解析函數:
encodeURIComponent() encodeURI()
encodeURIComponent() 函數用于編碼 URI 組件,它會將除了字母、數字、下劃線、連字符( -)、句點(.)、以及波浪線(~)之外的所有字符都進行編碼。而 encodeURI() 函數則會對整個 URI 進行編碼,除了例外字符之外不對其他字符進行編碼。
var query = "q=javascript&count=10"; var encodedQuery = encodeURIComponent(query); var encodedURI = encodeURI("http://www.example.com/search?" + query); console.log(encodedQuery); // "q%3Djavascript%26count%3D10" console.log(encodedURI); // "http://www.example.com/search?q=javascript&count=10"
上面的代碼中,我們將一個查詢字符串進行了編碼,并且將其拼接到了一個 URL 中。執行結果中 encodedQuery 和 encodedURI 各自包含了對應的編碼結果。
總結而言,Javascript 提供了豐富的字符串解碼和編碼函數,我們可以根據需要選擇合適的函數進行使用。這些函數使用起來非常簡單,只要傳入需要解碼或編碼的字符串即可。