转义字符的整理
文章目錄
- 轉(zhuǎn)義符號(hào) \
- 轉(zhuǎn)義字符清單
- 換行符
- 橫向制表符
- 空格
- 編碼符
轉(zhuǎn)義符號(hào) \
反斜杠\在程序設(shè)計(jì)中稱(chēng)為轉(zhuǎn)義符,用來(lái)表示那些不能直接顯示的字符。例如:換行。
在不同的系統(tǒng)中換行的表示又不相同,在Unix中換行符是\n,而在Windows中換行符是\r\n(先回車(chē)再換行),在Mac中換行是\r。這里的換行符的意思是,當(dāng)我們使用文本編輯器書(shū)寫(xiě)內(nèi)容時(shí),當(dāng)我們完成一行內(nèi)容(無(wú)論主動(dòng)敲擊回車(chē)鍵換行還是文本編輯器自動(dòng)換行),編輯器會(huì)自動(dòng)在我們每行文本后添加轉(zhuǎn)義字符(\n或者\(yùn)r\n或者\(yùn)r),也就是在每行末尾做個(gè)“標(biāo)記”,當(dāng)使用編輯器打開(kāi)時(shí),方便我們查看(這些“標(biāo)記”我們看不到)。
另外,在Bash中用于去除某些字符的特殊意義,保留跟隨在\之后的字符的字面值,參考示例1。
示例1:
說(shuō)明:反斜線(xiàn)去除了$字符的特殊意義,保留字面值,從而不輸出HOME變量的值
擴(kuò)展知識(shí):
路徑和參數(shù)的表示符號(hào)
- Windows:/是表示參數(shù),\是表示本地路徑
- Linux和Unix:/表示路徑,\表示轉(zhuǎn)義,-和--表示參數(shù)
- 網(wǎng)絡(luò):由于網(wǎng)絡(luò)使用Unix標(biāo)準(zhǔn),所以網(wǎng)絡(luò)路徑用/
參考文章:
Linux下反斜杠號(hào)""引發(fā)的思考
轉(zhuǎn)義字符清單
| \o | 空字符(NULL) | 00H/0,H 表示十六進(jìn)制,其實(shí)可以寫(xiě)成 0x00 |
| \n | 換行符(LF, Line Feed) | 0AH/10,十六進(jìn)制數(shù)可以寫(xiě)成 0x0A,下同 |
| \r | 回車(chē)符(CR, Carriage Return) | 0DH/13 |
| \t | 水平制表符(HT, Horizontal Tab) | 09H/9 |
| \v | 垂直制表符(VT, Vertical Tab) | 0BH/11 |
| \a | 響鈴(BEL, Bells) | 07H/7 |
| \b | 退格符(BS, Backspace) | 08H/8 |
| \f | 換頁(yè)符(FF, Form Feed) | 0CH/12 |
| \' | 單引號(hào) | 27H/39 |
| \" | 雙引號(hào) | 22H/34 |
| \\ | 反斜杠 | 5CH/92 |
| \? | 問(wèn)號(hào)字符 | 3F/63 |
| \$ | 美元符號(hào) | |
| \ddd | 三位八進(jìn)制所代表的任意字符 | 三位八進(jìn)制 |
| \xhh | 二位十六進(jìn)制數(shù)所代表的任意字符 | 二位十六進(jìn)制 |
換行符
\r是回車(chē),本義是光標(biāo)重新回到本行開(kāi)頭,名稱(chēng)傳承自以前的打字機(jī),表示打印頭歸位,r的英文return,控制字符可以寫(xiě)成CR,即Carriage Return
\n是換行,本義是光標(biāo)往下一行(不一定到下一行行首),名稱(chēng)傳承自以前的打字機(jī),表示走紙另起一行,n的英文newline,控制字符可以寫(xiě)成LF,即Line Feed
-
Dos和Windows采用回車(chē)(CR)+換行(LF)表示下一行,轉(zhuǎn)義符號(hào):\r\n,具體含義:光標(biāo)回到本行開(kāi)頭并往下一行,十六進(jìn)制ASCII碼:0x0D0A
-
Unix類(lèi)系統(tǒng)中采用換行(LF)表示下一行,轉(zhuǎn)義符號(hào):\n,具體含義:光標(biāo)下一行并回到行首,十六進(jìn)制ASCII碼:0x0A
-
MAC OS中采用回車(chē)(CR)表示下一行,轉(zhuǎn)義符號(hào):\r,具體含義:光標(biāo)回到本行開(kāi)頭并往下一行,十六進(jìn)制ASCII碼:0x0D
用表格整理如下:
| 換行符 | \r\n | \n | \r |
| ASCII | 0x0D0A | 0x0A | 0x0D |
注意:
vi/vim編輯器中,0x0D0A被表示成^M$($不是換行符的表示,換行符沒(méi)有表示出來(lái),$是文本結(jié)束EOF的表示),關(guān)于這個(gè)^M$東西并沒(méi)有同時(shí)出現(xiàn)過(guò)呀,我有疑問(wèn)!!!
一個(gè)直接后果是,Unix/Mac系統(tǒng)下的文件在Windows里打開(kāi)的話(huà),所有文字會(huì)變成一行;而Windows里的文件在Unix下打開(kāi)(例如vi編輯器)的話(huà),在每行的結(jié)尾會(huì)出現(xiàn)^M字符。
擴(kuò)展知識(shí):
關(guān)于“回車(chē)鍵”的來(lái)歷
還得從機(jī)械英文打字機(jī)說(shuō)起。在機(jī)械英文打字機(jī)上,有一個(gè)部件叫“字車(chē)”,每打一個(gè)字符(原為單詞,但是個(gè)人覺(jué)得這里應(yīng)該是字符),“字車(chē)”就前進(jìn)一格。當(dāng)打滿(mǎn)一行字符后,打字者就得推動(dòng)“字車(chē)”到起始位置,這時(shí)打字機(jī)會(huì)有兩個(gè)動(dòng)作響應(yīng):一是“字車(chē)”被歸位,二是滾筒上卷一行,以便開(kāi)始輸入下一行,這個(gè)推動(dòng)“字車(chē)”的動(dòng)作叫“回車(chē)”。后來(lái),在電動(dòng)英文打字機(jī)上,人們?cè)黾恿艘粋€(gè)直接起“回車(chē)”作用的鍵。這個(gè)新增的鍵就被稱(chēng)為“回車(chē)鍵”。
在電腦鍵盤(pán)上,“回車(chē)鍵”上曾經(jīng)使用過(guò)“CR”、“RETURN”的字樣,后來(lái)才統(tǒng)一確定為“Enter”。
為什么Windows會(huì)使用\r\n作為換行符?
在計(jì)算機(jī)還沒(méi)有出現(xiàn)之前,有一種叫做電傳打字機(jī)(Teletype Model 33,Linux/Unix下的tty概念也來(lái)自于此)的玩意,每秒鐘可以打10個(gè)字符。但是它有一個(gè)問(wèn)題,就是打完一行換行的時(shí)候,要用去0.2秒(注:估計(jì)是從打字機(jī)的最右邊回到最左邊的機(jī)械運(yùn)動(dòng) 所需要的時(shí)間),正好可以打兩個(gè)字符。要是在這0.2秒里面,又有新的字符傳過(guò)來(lái),那么這個(gè)字符將丟失。
于是,研制人員想了個(gè)辦法解決這個(gè)問(wèn)題,就是在每行后面加兩個(gè)表示結(jié)束的字符。一個(gè)叫做“回車(chē)(Carriage Return)”,告訴打字機(jī)把打印頭定位在左邊界;另一個(gè)叫做“換行(Line Feed)”,告訴打字機(jī)把紙向下移一行。這就是“換行”和“回車(chē)”的來(lái)歷,從它們的英語(yǔ)名字上也可以看出一二。
橫向制表符
\t:橫向制表符(HT),表示跳到下一個(gè) TAB 位置,也叫水平制表符
\t:是補(bǔ)全當(dāng)前字符串長(zhǎng)度到 8 的整數(shù)倍,最少 1 個(gè)最多 8 個(gè)空格,補(bǔ)多少要看 \t 前字符串長(zhǎng)度。
比如當(dāng)前字符串長(zhǎng)度 10,那么 \t 后長(zhǎng)度是16,也就是補(bǔ) 6 個(gè)空格;如果當(dāng)前字符串長(zhǎng)度 12,此時(shí) \t 后長(zhǎng)度是16,補(bǔ) 4 個(gè)空格。
空格
半角空格的 Unicode 是:\u0020,代碼中常用的,是英文符號(hào)
全角空格的 Unicode 是:\u3000,中文中使用,是中文符號(hào)
編碼符
\u,表示Unicode編碼,例如:\u4f60\u597d\uff0c\u4e16\u754c,\u后面的是十六進(jìn)制數(shù),轉(zhuǎn)換成二進(jìn)制數(shù)是2個(gè)字節(jié)(16bit),表示2個(gè)字節(jié)表示一個(gè)字符,這里有5個(gè)字符,如下:
public static void main(String[] args) {System.out.println("\u4f60\u597d\uff0c\u4e16\u754c");}得到的實(shí)際字符是:
你好,世界
總結(jié)
- 上一篇: 飞利浦电脑显示器图片(飞利浦显示器型号大
- 下一篇: HTTP网页请求响应的状态码/状态代码