必威电竞|足球世界杯竞猜平台

轉義字符
來源:互聯網

轉義字符是很多程序語言、數據格式和通信協議的形式文法的一部分,是字符常量的一種特殊表現形式,用來表示字符集中的控制字符和格式字符,以及一些有特殊用途的字符。所有的ASCII碼都可以用“\”加數字(一般是8進制數字)來表示。而C中定義了一些字母前加“\”來表示常見的那些不能顯示的ASCII字符,如\0,\t,\n等,就稱為轉義字符,因為后面的字符,都不是它本來的ASCII字符意思了。

轉義字符不屬于控制字符,轉義序列通常有兩種功能,一個是編碼一個句法上的實體,另一個是字符引用。在數據寫入數據庫前,都會使用轉義字符(函數)對一些敏感字符進行轉義。這樣做可以避免一些別有用心的人利用特殊符號的注入攻擊。

簡介

轉義字符是很多程序語言、數據格式和通信協議的形式文法的一部分。對于一個給定的字母表,一個轉義字符的目的是開始一個字符序列,使得轉義字符開頭的該字符序列具有不同于該字符序列單獨出現時的語義。因此轉義字符開頭的字符序列被叫做轉義序列。

轉義序列通常有兩種功能。第一個是編碼一個句法上的實體,如設備命令或者無法被字母表直接表示的特殊數據。第二種功能,也叫字符引用,用于表示無法在當前上下文中被鍵盤錄入的字符(如字符串中的回車符),或者在當前上下文中會有不期望的含義的字符(如c語言字符串中的雙引號字符",不能直接出現,必須用轉義序列表示)。在后面那種情況,轉義序列是一種由轉義字符自身和一個被引用的字符組成的一個二合字母(digraph)情形。

控制字符

轉義字符不屬于控制字符;控制字符也不屬于轉義字符。如果控制字符的定義是非圖形的字符,或者對輸出設備(打印機、文本終端)有特殊意義的字符,那么針對這些設備的轉義字符也是控制字符。但是程序設計用的轉義字符是圖形字符,因此它們不是控制字符。相反地,大多數ASCII控制字符單獨都具有控制功能,因此它們不是轉義字符。

英語解釋

數據?Link?Escape?字符?數據傳送換碼字符(通信控制用)

c語言轉義

字符表

所有的轉義字符和所對應的意義:

字符型常量

字符型常量所表示的值是字符型變量所能包含的值。我們可以用ASCII表達式來表示一個字符型常量,或者用單引號內加反斜杠表示轉義字符。

'A', '\x2f', '\013';

其中:\x表示后面的字符是十六進制數,\0表示后面的字符是八進制數。

注意:在Turbo C 2.0中,字符型常量表示數的范圍是-128到127,除非你把它聲明為unsigned,這樣就是0到255。

上面我們見到的\x,\n,\a等等都是叫轉義字符,它告訴編譯器需要用特殊的方式進行處理。

類型

HTML轉義符、java 轉義符、XML 轉義符、 Oracle數據庫 轉義符、SQL 轉義符、sqlserver 轉義符、PHP 轉義符、asp 轉義符、vb轉義符、 ECMAScript 轉義符等等,還有網址中的百分號

例如,HTML的< >&"?對別是<,>,&,",?的轉義字符

XML只有5個轉義符: < >& " '

原因

轉義字符串(Escape Sequence)也稱字符實體(Character 實體)。在HTML中,定義轉義字符串的原因有兩個:第一個原因是像“<”和“>”這類符號已經用來表示HTML標簽,因此就不能直接當做文本中的符號來使用。為了在HTML文檔中使用這些符號,就需要定義它的轉義字符串。當解釋程序遇到這類字符串時就把它解釋為真實的字符。在輸入轉義字符串時,要嚴格遵守字母大小寫的規則。第二個原因是,有些字符在ASCII字符集中沒有定義,因此需要使用轉義字符串來表示。

其實所有編程語言,擁有轉義字符的原因基本上是兩點:一、使用轉義字符來表示字符集中定義的字符,比如ASCll里面的控制字符及回車換行等字符,這些字符都沒有現成的文字代號。所以只能用轉義字符來表示。二、某一些特定的字符在編輯語言中被定義為特殊用途的字符。這些字符由于被定義為特殊用途,它們失去了原有的意義。比如說HTML中,<被HTML定義為標簽的開始,所以當我們轉入<時,HTML就會把它當作為開始,而不是當作一個<來看待。再如PHP 的雙引號("),被PHP定義為字符串的外圍標簽,所以如果你在一對雙引號里面,還想要使用雙引號,只能使用轉義字符了。不然PHP就會報錯了。

從上面也可以看出轉義無非是兩種情況:1:將普通字符轉為特殊用途,一般是編程語言中,用于表示不能直接顯示的字符,比如后退鍵,回車鍵,等。2:用來將特殊意義的字符轉換回它原來的意義。一般用在正則表達式中。還有有些腳本語言是弱類型,有些語言比如HTML 并不是編程語言,而是標記語言,有些語言只有一種類型 比如殼層 腳本語言,這些語言中字符串都不加引號” ” ,或者可以不加引號“ ”,所以有時候需要轉義字符說明某字符此時的身份是普通字符,而不是有特殊意義的元字符。

另外出于網站的安全。在數據寫入數據庫前,都會使用轉義字符(函數)對一些敏感字符進行轉義。這樣做可以避免一些別有用心的人利用特殊符號的注入攻擊。

組成

轉義字符串(Escape Sequence),即字符實體(Character 實體)分成三部分:第一部分是一個&符號,英文叫ampersand;第二部分是實體(Entity)名字或者是#加上實體(Entity)編號;第三部分是一個分號。

比如,要顯示小于號(<),就可以寫 < 或者 < 。

用實體(Entity)名字的好處是比較好理解,一看lt,大概就猜出是less than的意思,但是其劣勢在于并不是所有的瀏覽器都支持最新的Entity名字。而實體(Entity)編號,各種瀏覽器都能處理。

提示:實體名稱(實體)是區分大小寫的。

備注:同一個符號,可以用“實體名稱”和“實體編號”兩種方式引用,“實體名稱”的優勢在于便于記憶,但不能保證所有的瀏覽器都能順利識別它,而“實體編號”則沒有這種擔憂,但它實在不方便記憶。

如何顯示空格

通常情況下,HTML會自動截去多余的空格。不管你加多少空格,都被看做一個空格。比如你在兩個字之間加了10個空格,HTML會截去9個空格,只保留一個。為了在網頁中增加空格,你可以使用 表示空格。

JavaScript轉義符

轉義序列 字符

\b 退格

\f 走紙換頁

\n 換行

\r 回車

\t 橫向跳格 (ctrlI)

\' 單引號

\" 雙引號

\\ 反斜杠

特殊轉義字符列表

url轉義字符

web 開發中通過問號(?)方式在瀏覽器地址欄中傳值時。瀏覽器是通過“&”來區分問號后的參數個數的。如果出現傳值參數中帶有“&”時,在接受頁面就會出現錯誤,類似如下請求路徑:/next.jsp?param1=hendhs89&furej & param2=sss

參數param1中含有轉義字符“&” ,這樣會導致被請求頁的參數接收錯誤。

在傳值前 通過 java.net.URLEncoder.encode(param1) 編碼處理后,可將轉義字符轉為16進制;

1. + URL 中+號表示空格 %2B

2. 空格 URL中的空格可以用+號或者編碼 %20

3. / 分隔目錄和子目錄 %2F

4. ? 分隔實際的 URL 和參數 %3F

5. % 指定特殊字符 %25

6. # 表示書簽 %23

7. & URL中指定的參數間的分隔符 %26

8. = URL中指定參數的值 %3D

如何避免

在編寫網頁時,如果直接在雙引號之間輸入路徑,其中的“\”及其之后的文本易被誤認為轉義字符。為避免這一點,只需在字符串的引號前加“@”符號(不包括外側引號)。如:@ "c:\ab\cd\ef.jpg" 。

參考資料 >

生活家百科家居網