原理:這些%E8%AA%9E%E9%9F%B30025.aac不是亂碼,而是16進位編碼
這些是因為URL在網路上只能以ASCII碼傳送,而ASCII就只有英、數字及特殊符號,
所以對於中文字碼是沒有支援的,因此須將中文以UTF8轉成16進位編碼(%E8%AA%9E%E9%9F%B30025.aac)
解碼法:decodeURI(‘%E8%AA%9E%E9%9F%B30025.aac’)
結果:語音0025.aac
(3).但是:input text文字欄位,div文字標籤,若設定中文字碼後,再取出,不會有URI亂編碼
(4).javascript的三種編碼與解碼指令:
(A).encodeURI/decodeURI
用於編碼整個URL,因為URL中的合法字元都不會被編碼轉換;
進行url跳轉時可以整體使用encodeURI。
(B).encodeURIComponent/decodeURIComponents
對url的參數編碼,特別在參數也是一個url的情況,如果不編碼會影響整個url跳轉。
例如:document.write('<a href="http://pas.du.com/?logout&aid=7&u='+encodeURIComponent("http://ca.du.com/br")+'">退出</a>');
在向後端傳值時,參數存在特殊字元時,我們一般使用這種編碼方法
(C).escape/unescape
除了ASCII 字母、數位和特定的符號外,對傳進來的字串全部進行轉義編碼;
因此如果想對URL編碼,最好不要使用此方法;
escape()適合對url的參數進行編碼。