1. 程式人生 > >編碼/轉換

編碼/轉換

art sdn har 而是 操作系統 操作 utf blank decode

* 編碼

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碼

編碼/轉換