JSON 裡的單引號及特殊字元。。

2021-09-17 02:47:42 字數 2113 閱讀 1768

常用html轉義字元

字串轉json :   json.parse(str)

json 轉字串:   json.stringify(obj)

保留字元的url編碼 !

*"'(

);:@

&%21%2a%22%27%28%29%3b%3a%40%26=+

$,/?

%#%3d%2b%24%2c%2f%3f%25%23%5b%5d

下面的**列出了這三個函式的安全字元(即函式不會對這些字元進行編碼)

安全字元

escape(69個)

*/@+-._0-9a-za-z

encodeuri(82個)

!#$&'()*+,/:;=?@-._~0-9a-za-z

encodeuricomponent(71個)

!'()*-._~0-9a-za-z

通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如size過大,包含隱私資料,對於url來說,之所以要進行編碼,是因為url中有些字元會引起歧義。

例如url引數字串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc& ie=utf-8。如果你的value字串中包含了=或者&,那麼勢必會造成接收url的伺服器解析錯誤,因此必須將引起歧義的&和= 符號進行轉義,也就是對其進行編碼。

又如,url的編碼格式採用的是ascii碼,而不是unicode,這也就是說你不能在url中包含任何非ascii字元,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支援的字符集不同的情況下,中文可能會造成問題。

url編碼的原則就是使用安全的字元(沒有特殊用途或者特殊意義的可列印字元)去表示那些不安全的字元。

rfc3986文件規定,url中只允許包含英文本母(a-za-z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元。

rfc3986文件對url的編譯碼問題做出了詳細的建議,指出了哪些字元需要被編碼才不會引起url語義的轉變,以及對為什麼這些字元需要編碼做出了相應的解釋。

url中只允許使用可列印字元。us-ascii碼中的10-7f位元組全都表示控制字元,這些字元都不能直接出現在url中。同時,對於80-ff位元組(iso-8859-1),由於已經超出了us-acii定義的位元組範圍,因此也不可以放在url中。

url可以劃分成若干個元件,協議、主機、路徑等。有一些字元(:/?#@)是用作分隔不同元件的。例如:冒號用於分隔協議和主機,/用於分隔 主機和路徑,?用於分隔路徑和查詢引數,等等。還有一些字元(!$&'()*+,;=)用於在每個元件中起到分隔作用的,如=用於表示查詢引數中 的鍵值對,&符號用於分隔查詢多個鍵值對。當元件中的普通資料報含這些特殊字元時,需要對其進行編碼。

rfc3986中指定了以下字元為保留字元:!*

'();

:@&=

+$,/

?#還有一些字元,當他們直接放在url中的時候,可能會引起解析程式的歧義。這些字元被視為不安全字元,原因有很多。

空格url在傳輸的過程,或者使用者在排版的過程,或者文字處理程式在處理url的過程,都有可能引入無關緊要的空格,或者將那些有意義的空格給去掉

引號以及<>

引號和尖括號通常用於在普通文字中起到分隔url的作用

#通常用於表示書籤或者錨點

%百分號本身用作對不安全字元進行編碼時使用的特殊字元,因此本身需要編碼

{}|\^`~

某一些閘道器或者傳輸**會篡改這些字元

1 5 單引號 雙引號及轉義字元

比如,我們想在螢幕輸出 hello world 我們可以以單引號開頭單引號結尾,或者是雙引號開頭,雙引號結尾 print hello word print hello word 假如我想列印下面這段文字,但是文字裡面有乙個單引號和兩個雙引號 那麼,如果我們在print函式裡面,以單引號開頭,單引號結...

oracle中使用單引號或者其他特殊字元處理方法

start 字串是用單引號括起來的,如果想在字串中輸入單引號該怎麼辦呢?有兩種方法。方法一 是用兩個單引號代表乙個單引號 select i m mixika99 from dual 方法二 使用 oracle 特殊語法 select q i m mixika99 from dual 事實上,我們可以...

sql的轉義字元單引號

在sql中,我們都知道單引號 表示字串的開始和結束符號,如 select from students where name 小明 但如果字串裡面有單引號時,應該怎麼查詢呢?這是我最近遇到的乙個問題,需求是對一張表的資料進行更新,但各個環境的資料並不一致,只能通過拼接的方式生成適合對應環境的變更指令碼...