天天看點

特殊符号/轉義字元的整理

文章目錄

    • 轉義字元
      • html常用轉義字元
      • 轉義符号 \
    • 特殊符号
      • 換行符
      • 空格符
      • 編碼符

轉義字元

html常用轉義字元

字元 轉義符
"

"

&

&

<

&lt;

>

&gt;

空格

參考文章:

Html轉義字元

轉義符号 \

反斜杠

\

在程式設計中稱為轉義符,用來表示那些不能直接顯示的字元。例如:換行。

在不同的系統中換行的表示又不相同,在Unix中換行符是

\n

,而在Windows中換行符是

\r\n

(先回車再換行),在Mac中換行是

\r

。這裡的換行符的意思是,當我們使用文本編輯器書寫内容時,當我們完成一行内容(無論主動敲擊Enter鍵換行還是文本編輯器自動換行),編輯器會自動在我們每行文本後添加轉義字元(

\n

或者

\r\n

或者

\r

),也就是在每行末尾做個“标記”,當使用編輯器打開時,友善我們檢視(這些“标記”我們看不到)。

另外,在Bash中用于去除某些字元的特殊意義,保留跟随在

\

之後的字元的字面值,參考示例1。

示例1:

[email protected]:~$ echo $HOME
/home/ubuntu
[email protected]:~$ echo \$HOME
$HOME
           

說明:反斜線去除了

$

字元的特殊意義,保留字面值,進而不輸出

HOME

變量的值

擴充知識:

路徑和參數的表示符号

  • Windows:

    /

    是表示參數,

    \

    是表示本地路徑
  • Linux和Unix:

    /

    表示路徑,

    \

    表示轉義,

    -

    --

    表示參數
  • 網絡:由于網絡使用Unix标準,是以網絡路徑用

    /

參考文章:

Linux下反斜杠号""引發的思考

特殊符号

換行符

\r

是回車,本義是光标重新回到本行開頭,名稱傳承自以前的打字機,表示列印頭歸位,

r

的英文

return

,控制字元可以寫成

CR

,即

Carriage Return

\n

是換行,本義是光标往下一行(不一定到下一行行首),名稱傳承自以前的打字機,表示走紙另起一行,

n

的英文

newline

,控制字元可以寫成

LF

,即

Line Feed

  • Dos和Windows采用回車(CR)+換行(LF)表示下一行,轉義符号:

    \r\n

    ,具體含義:光标回到本行開頭并往下一行,十六進制ASCII碼:

    0x0D0A

  • Unix類系統中采用換行(LF)表示下一行,轉義符号:

    \n

    ,具體含義:光标下一行并回到行首,十六進制ASCII碼:

    0x0A

  • MAC OS中采用回車(CR)表示下一行,轉義符号:

    \r

    ,具體含義:光标回到本行開頭并往下一行,十六進制ASCII碼:

    0x0D

用表格整理如下:

Windows Linux/Unix Mac OS
換行符

\r\n

\n

\r

ASCII

0x0D0A

0x0A

0x0D

注意:

vi/vim編輯器中,

0x0D0A

被表示成

^M$

$

不是換行符的表示,換行符沒有表示出來,

$

是文本結束

EOF

的表示),關于這個

^M$

東西并沒有同時出現過呀,我有疑問!!!

一個直接後果是,Unix/Mac系統下的檔案在Windows裡打開的話,所有文字會變成一行;而Windows裡的檔案在Unix下打開(例如vi編輯器)的話,在每行的結尾會出現

^M

字元。

擴充知識:

  1. 關于“Enter鍵”的來曆

    還得從機械英文打字機說起。在機械英文打字機上,有一個部件叫“字車”,每打一個字元(原為單詞,但是個人覺得這裡應該是字元),“字車”就前進一格。當打滿一行字元後,打字者就得推動“字車”到起始位置,這時打字機會有兩個動作響應:一是“字車”被歸位,二是滾筒上卷一行,以便開始輸入下一行,這個推動“字車”的動作叫“回車”。後來,在電動英文打字機上,人們增加了一個直接起“回車”作用的鍵。這個新增的鍵就被稱為“Enter鍵”。

    在電腦鍵盤上,“Enter鍵”上曾經使用過“CR”、“RETURN”的字樣,後來才統一确定為“Enter”。

  2. 為什麼Windows會使用

    \r\n

    作為換行符?

    在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33,Linux/Unix下的tty概念也來自于此)的玩意,每秒鐘可以打10個字元。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒(注:估計是從打字機的最右邊回到最左邊的機械運動 所需要的時間),正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元将丢失。

    于是,研制人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做“回車(Carriage Return)”,告訴打字機把列印頭定位在左邊界;另一個叫做“換行(Line Feed)”,告訴打字機把紙向下移一行。這就是“換行”和“回車”的來曆,從它們的英語名字上也可以看出一二。

空格符

\t

表示空格,

半角空格的Unicode是:\u0020,代碼中常用的,是英文符号

全角空格的Unicode是:\u3000,中文中使用,是中文符号

編碼符

\u

,表示Unicode編碼,例如:

\u4f60\u597d\uff0c\u4e16\u754c

\u

後面的是十六進制數,轉換成二進制數是2個位元組(16bit),表示2個位元組表示一個字元,這裡有5個字元,如下:

public static void main(String[] args) {
        System.out.println("\u4f60\u597d\uff0c\u4e16\u754c");
    }
           

得到的實際字元是:

你好,世界