vue使用urlEncode問題
vue使用urlEncode
// 解碼用 decodeURIComponent(str) // 編碼用 encodeURIComponent(str)
為什么要urlencode()
why
1.當字符串數據以url的形式傳遞給web服務器時,字符串中是不允許出現(xiàn)空格和特殊字符串的
2.url對字符有限制,比如把一個郵箱放入url,就需要使用urlencode函數。
3.url轉義其實也只是為了符合url的規(guī)范而已。因為在標準的url規(guī)范中中文和很多的字符是不允許出現(xiàn)在url中的。
urlencode的說明:
- urlencode ( string
$str
) : string
此函數便于將字符串編碼并將其用于 URL 的請求部分,同時它還便于將變量傳遞給下一頁。
- 參數
str 要編碼的字符串
- 返回值
返回字符串,此字符串中除了-_.之外的所有 非字母數字 字符都被替換成百分號(%)后跟 兩位十六進制數,
空格 則編碼位加號(+)。此編碼與www表單post數據的編碼方式是一樣的,同時與application/x-www-form-urlencoded的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(+)方面與RFC3986編碼不同。
哪些字符是需要轉化的呢?
- 1.ASCII的控制字符
這些字符都是不可打印的,自然需要進行轉化。
- 2.一些非ASCII字符
這些字符自然是非法的字符范圍。轉化也是理所當然的了。
- 3.一些保留字符
很明顯最常見的就是“&”了,如果這個出現(xiàn)在url中,那你認為是url中的一個字符呢,還是特殊的參數分割符呢?
- 4.一些不安全的字符
例如:空格。為了防止引起歧義,需要被轉化為“+”。
明白了這些,也就知道了為什么需要轉化了,而轉化的規(guī)則也是很簡單的。
按照每個字符對應的字符編碼,不是符合我們范圍的,統(tǒng)統(tǒng)的轉化為 % 的形式,自然也是16進制的形式。
和字符編碼無關
通過urlencode的轉化規(guī)則和目的,我們也很容易的看出,urlencode是基于字符編碼的。同樣的一個漢字,不同的編碼類型,肯定對應不同的urlencode的串。gbk編碼有gbk的encode結果。
apache等服務器,接收到字符串后,可以進行decode,但是還是無法解決編碼的問題。編碼的問題,還是需要靠約定或者字符編碼的判斷解決。
因此,urlencode只是為了url中一些非ASCII字符,可以正確無誤的被傳輸,至于使用哪種編碼,就不是urlencode所關心和解決的問題了。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue使用docx-preview實現(xiàn)docx文件在線預覽功能全過程
文件在線預覽是目前移動化辦公的一種新趨勢,下面這篇文章主要給大家介紹了關于vue?docx-preview實現(xiàn)docx文件在線預覽功能的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04