今將escape、encodeURI、encodeURIComponent三種方法得差異整理如下:
參考幾篇不錯的文章:
- 清楚解釋各encode對中文的編碼方式:用Javascript替中文轉碼:escape, encodeURI, encodeURIComponent 的比較
- https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURI
- https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent
- http://blog.miniasp.com/?tag=/encodeuri
- http://diary.tw/march/category/Javascript
並依得到的資訊,實際測試字串"A
文字類型 | 英文 | 數字 | 中文 | Unescaped characters | Reserved characters | Score | |||||||||||||||||||||
原始字串 | A | Z | a | z | 0 | 1 | 堃 | - | _ | . | ! | ~ | * | ' | ( | ) | ; | , | / | ? | : | @ | & | = | + | $ | # |
escape後 | A | Z | a | z | 0 | 1 | %u5803 | - | _ | . | %21 | %7E | * | %27 | %28 | %29 | %3B | %2C | / | %3F | %3A | @ | %26 | %3D | + | %24 | %23 |
encodeURI後 | A | Z | a | z | 0 | 1 | %E5%A0%83 | - | _ | . | ! | ~ | * | ' | ( | ) | ; | , | / | ? | : | @ | & | = | + | $ | # |
encodeURI Component後 | A | Z | a | z | 0 | 1 | %E5%A0%83 | - | _ | . | ! | ~ | * | ' | ( | ) | %3B | %2C | %2F | %3F | %3A | %40 | %26 | %3D | %2B | %24 | %23 |
ps. 上表紅色字體表示部分,是突顯各Encode方法,不會做Encode的字元!
由上方的資訊可以整理出一些結論:
- 英文字、數字、-、
所以在使用時,我認為可由兩方面去思考,判斷應使用哪一種Encode:
- 您要Encode的內容,適合使用哪一種編碼方式?! UTF-8 還是 UTF-16 ?!
(這點跟使用的環境支援哪一種Encode … 等會有相關。) - 您要Encode的內容,是否包含了於 URI 有特殊意義的字元?!
沒有留言:
張貼留言