編碼相關(guān)
對工作中遇到相關(guān)的編碼問題的一個總結(jié)尤溜。
編碼出現(xiàn)的環(huán)境
- 直接顯示在頁面
- 在script 標(biāo)簽中
- 在頁面事件中
- 在innerHTML 的語境
- 在頁面鏈接的url中
- 提交url參數(shù)處理
- js 獲取url參數(shù)值的時候
處理辦法
1.對于要顯示在頁面中的數(shù)據(jù)秒旋,這個時候要防止標(biāo)簽的自閉合秕磷,以及屬性中單引號和雙引號。
- "<" ---> "<";
- ">" ---> ">";
- ' ---> ";
- " ---> ';
2.在JavaScript中單引號和雙引號中都是表示字符串,并沒有什么區(qū)別。
- ' ---> '
- " ---> "
- \ ---> \
- / ---> /
3.在頁面事件中唇跨、在innerhtml的語境中。
這類語境涉及到了頁面html和js環(huán)境衬衬,先進行js轉(zhuǎn)義买猖,然后再進行html轉(zhuǎn)義。
4.頁面url中
這類比較復(fù)雜滋尉,url中本身涉及到很多的特殊字符玉控,此外也會涉及到html 和js 環(huán)境中的賦值的情況,
特別注意狮惜,url 編碼和html的編碼是不一樣的高诺,見后文附錄url編碼表和html編碼表
- 在html 和js環(huán)境中,需要轉(zhuǎn)義的字符為: ” 讽挟,' 懒叛,<,>耽梅,\ ,/
- 在其他環(huán)境中胖烛,需要轉(zhuǎn)義的字符為:+眼姐,空格,佩番?众旗,=,&趟畏,#贡歧, %
這類字符的轉(zhuǎn)義如下:
” ---> %22;
' ---> %22;
< ---> %3C
">" ---> %3E
\ ---> %5C
/ ---> %2F
"+" ---> %2b
空格 ---> %20
? ---> %3F
= ---> %3D
& ---> %26
"#" ---> 23
"%" ---> %25
提交url 參數(shù)的處理:
- Form表單提交方式:
不需要做任何處理,表單會依照頁面的編碼進行編碼
- ajax的提交:
因為ajax的提交的時候利朵,是拼接成url的方式提交給后端的律想,所以必須要考慮對 +,空格绍弟,技即?,=樟遣,&而叼,#, % 的轉(zhuǎn)義豹悬,通常使用 encodeURIComponent進行轉(zhuǎn)義
- js 獲取url參數(shù)的值的時候
- 得到url中的參數(shù)值的時候葵陵,首先必須要進行decodeURIComponent的轉(zhuǎn)碼才能使用,因為url中的一些特殊字符都經(jīng)過了編碼
- 將url的值設(shè)置到一些參數(shù)上時瞻佛,比如隱藏表單上的value值的時候(作提交refer)埃难,需要進行encodeURIComponent 編碼