編碼/轉換
* 編碼
https://blog.csdn.net/u012252959/article/details/49025225
1. 種類
發明:美國等國家發明,標準碼 iso-8859-1,編碼單單字節編碼,支持歐洲語言
演變:機器不認識中文,國際碼 gbk 簡稱 gb2312 【GBK漢子國標擴展碼,采用gb2312的所有漢字及編碼還涵蓋了Unicode中的漢字】
後來:阿拉伯語、日語、韓語等,統一編碼UniCode
2. URL和URI
URL 統一資源定位符,地址欄中就是url,如 http://www.baidu.com/question/01.html
URI 統一資源標識符,從虛擬路徑開始, 如 /question/01.html
問題: [字母:a-z A-Z , 數字:0-9, 特殊符號:,$-_.+!*‘() ] 不用進行編碼可直接用於url。 意味著url不能直接使用中文,http://www.aβγ.com 等,那麽RFC 1738沒有規定具體的編碼方法,而是直接交給應用程序(瀏覽器)
自己解決,這樣就導致了“url亂碼”
結論: 網址路徑包含漢字 (http://zh.wikipedia.org/wiki/春節):采用 utf-8 編碼 ,變為 http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82
查詢字符串中包含漢字 (http://www.baidu.com/s?wd=春節): 采用操作系統默認編碼
get/post請求:由網頁的編碼決定<meta http-equiv="Content-Type" content="text/html;charset=xxxx">
解決方法:先對url編碼,提交服務器。
3.編碼解碼
3.1 escape()編碼
被編碼後都變為unicode字符
在/u0000 ~ /u00ff直接轉換,escape()不對【+】進行編碼(因為空格被轉換為+字符), 解碼unescape() ,比較古老
javascript: escape("春節"); //"%u6625%u8282"
3.2 encodeURI()
- js中真正對url編碼的函數。
- 對整個url編碼,不對【; / ? : @ & = + $ , #】編碼。
- 編碼後輸出符號為 utf-8 形式,並且每個字節前面加了%
javascript: encodeURI("春節"); //"%E6%98%A5%E8%8A%82" decodeURI("%E6%98%A5%E8%8A%82");
3.3 encodeURIComponent()
- 對url的組成部分編碼,不是整個url
- encodeURI()不對【; / ? : @ & = + $ , #】編碼,但是在encodeURIComponent() 中都會被編碼
- 解碼 decodeURIComponent()
encodeURIComponent("[email protected]");//"mail%40example.com" encodeURI("[email protected]"); //"[email protected]" decodeURIComponent("mail%40example.com"); //"[email protected]"
4. ASCLL碼
編碼/轉換