URL中的保留和不安全字元

2021-08-10 23:57:36 字數 1476 閱讀 5628

書寫url時要使用us-ascii字符集可以顯示的字元。如果需要在url中使用不屬於此字符集的字元,就要使用特殊的符號對該字元進行編碼。如:最常使用的空格用%20來表示,例如:除了那些無法顯示的字元外,還需要在url中對那些保留(reserved)字元和不安全(unsafe)字元進行編碼。

所謂保留字元就是那些在url中具有特定意義的字元。不安全字元是指那些在url中沒有特殊含義,但在url所在的上下文中可能具有特殊意義的字元。例如雙引號(「」)

部分保留字元和不安全字元及其url編碼

字元描述

用法編碼;分號

保留%3b/斜線

保留%2f?問號

保留%3f:冒號

保留%3a

@「at」符號

保留%4o=等號

保留%3d

&「和」符號

保留%26

<

小於號不安全

%3c>

大於號不安全

%3e「

雙引號不安全

%22#

井號不安全

%23%

百分號不安全

%25右大括號

不安全%7d|豎線

不安全%7c

\反斜線

不安全%5c

^加字型大小

不安全%5e~波浪

不安全%7e

[左中括號

不安全%5b

]右中括號

不安全%5d

`反單引號

不安全%60

空格不安全

%20

通常情況下,如果對某個字元能否在url中使用有疑問,那麼你應該始終使用該字元的編碼。除字母、數字和字元$-_.+!*』()外的其它所有字元都應該使用編碼。

url編碼在ascii表中的體現

如何編碼?

眾所周知,字元是可由八位位元組數(octet)來表示的,八位位元組數可用十六進製制來表示它的值。如字元「<」的八位位元組數十六進製制值是3c。在url中,字元的編碼方式為:「%」加上字元的兩個十六進製制數值。舉幾個例子:

「<」可以被編碼為%3c,空格「sp」可被編碼為「%20」 「田」的gb2312編碼十六進製制值是cc

ef,這時「田」的url編碼為%cc%ef 「囧」的gbk編碼十六進製制值是87 e5,這時「囧」的url編碼為%87%e5

「田」的utf-8編碼十六進製制值是e7 94 b0,這時「田」的url編碼為%e7%94%b0 url中包含漢字時的更多話題

rfc1738沒有規定漢字的編碼方式,而是讓瀏覽器自己去決定,因此造成了url漢字編碼的不統一。經過研究,對於url中的「查詢字串」和「路徑」中包含漢字,不同瀏覽器有不同的處理。

url路徑中包含漢字 在**直接輸入:田囧 ,敲擊回車,觀察請求 路徑中含有中文 ie8和firefox都把漢字作為utf8,按規範進行了url編碼。

原文請看:

Java 過濾不安全字元

public static string htmlencode string pstrword if pstrword null pstrword stringbuffer pobjbuffer new stringbuffer int j pstrword.length for int i 0 i...

執行緒安全和執行緒不安全的區別

程序和執行緒 1 程序是靜態的,其實就是指開啟的乙個程式 而執行緒是動態的,是真正執行的單元,執行的過程。其實我們平時看到的程序,是執行緒在執行著,因為執行緒是作為程序的乙個單元存在的。2 同樣作為基本的執行單元,執行緒是劃分得比程序更小的執行單位。3 每個程序都有一段專用的記憶體區域。與此相反,執...

執行緒安全和執行緒不安全的區別

程序和執行緒 1 程序是靜態的,其實就是指開啟的乙個程式 而執行緒是動態的,是真正執行的單元,執行的過程。其實我們平時看到的程序,是執行緒在執行著,因為執行緒是作為程序的乙個單元存在的。2 同樣作為基本的執行單元,執行緒是劃分得比程序更小的執行單位。3 每個程序都有一段專用的記憶體區域。與此相反,執...