測(cè)試
1. 客戶端:qq瀏覽器叔营、firfox撑刺、chrome
2. 測(cè)試用例
? ? (1) url中path帶漢字
? ? (2)url中query帶漢字
? ? (3)頁面中g(shù)et請(qǐng)求或者post請(qǐng)求
? ? (4)頁面中meta元數(shù)據(jù) charset="utf-8" 或者 charset="gb2312"
調(diào)研結(jié)果(ps: 比較片面域那,受瀏覽器種類和版本影響,結(jié)果可能不同,結(jié)果不代表絕對(duì)性次员,只是利用有效條件)
qq瀏覽器行為和chrome行為一致败许,會(huì)對(duì)中文進(jìn)行編碼,firfox不會(huì)
encodeURI和encodeURIComponent的重要性
因?yàn)楦鱾€(gè)瀏覽器的行為不一致淑蔚,所以給開發(fā)人員帶來困惑市殷,需要一種通用的方法來避免掉多種適配的麻煩。所以encdoeURI和encodeURIComponent這兩個(gè)標(biāo)準(zhǔn)就出現(xiàn)了刹衫,encodeURI現(xiàn)在已經(jīng)用的少了醋寝,基本都用encodeURIComponent
encodeURI vs encodeURIComponent
不同點(diǎn)
encodeURI: 除掉特定字符不編碼外(包括瀏覽器訪問url里面的預(yù)留符號(hào)和其
他得一些符號(hào)), 這些不編碼的符號(hào)是: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ),其他字符都要編碼
encodeURIComponent: 除特定字符編碼外带迟,其他字符都編
碼(包括瀏覽器url里面的預(yù)留字符),這些不編碼的符號(hào)是:A-Z a-z 0-9 - _ . ! ~ * ' ( )
相同點(diǎn)
都是采用的utf-8編碼
例子
var test = 'http://www.test.com/例子'
encodeURI(test)?
# "http://www.test.com/%E4%BE%8B%E5%AD%90"
encodeURIComponent(test)?
# "http%3A%2F%2Fwww.test.com%2F%E4%BE%8B%E5%AD%90"