0.概述
有一天,我突發奇想,想要在一段文本中篩選出所有的中文。
這一下把我難倒了——老師教的是 碼,包含了所有的拉丁字母、數字等。但是漢字是怎麼存儲的?
我懵了,趕緊上網一陣亂查,把自己都查暈了,寫個文章捋一捋。所以這是一篇沒用的垃圾文章。
1.
碼在百度百科中被解釋爲“美國信息交換標準代碼”,是一種編碼的方式,也是最簡單的一種編碼。它的範圍很小,只用了 這些數字。
說明:下文將涉及一些 內的玩意兒。不知道是不是所有編程語言的存儲方式都相同?
如果你試着將 和 亂轉換,你就會得到一張 碼錶。這在百度百科中有。
衆所周知, 是一個字節,可以存儲 內的整數。
2.
只有拉丁字母怎麼夠?世界上那麼多的語言,只靠 碼錶示不了啊。
然後就有了更強力的編碼方案, 。顯然來源於 的意義。它 可以容納世界上所有文字和符號!可以參見百度百科。
介紹一個小技巧:在 中按 ,可以使光標前的字符轉化成 碼(十六進制)!再按一次,還能轉換回來。提示: 是四位十六進制數,共兩字節。
然而,很顯然,這玩意兒很長。全世界的字符那麼多,如果每一個都按照 規定的碼值來存儲,就會很浪費空間。用二進制一看:一大堆零!
所以 只規定了一個對應法則,但是 存儲時使用特定方案。其中一種,就是 。
它是 變長 的,使用一到六個字節。究竟怎麼存?請看這篇文章。
3.
是啥呀?其實就是 本地語言。所以它並不固定,在中國(簡體中文), 代指 或 。
但是,任何一個國家的 都會使用兩個字節來存儲,除了純英文使用 碼。
可以看這篇文章來加深印象。至於 麼?我馬上要講的啦!
4.
這是什麼?是中文的編碼方案(終於進入正題了)。它使用兩個字節來存儲一個漢字。而且,很有特點的是,這兩個字節範圍爲 。爲什麼不使用 這個編碼呢?有待考究。
這個範圍,使用 存儲時,將會得到負數。所以,負數就是判斷中文的方法!
5.
然而 沒有收錄所有漢字,所以又搞了個 , 在 以後就代表着這種編碼方式。
更多的我就不講了,同學們自己看看這篇文章也是極好的。
反正我還沒碰到過需要使用 相較於 擴展的字符。
6.控制檯語言
有時候程序輸出到控制檯(黑窗口, ) 的中文會變成亂碼,但是改用文件輸入輸出,直接打開文件,結果又是正確的。爲什麼?
因爲控制檯的默認語言是 。這可以通過右鍵單擊打開的 窗口的邊欄,選擇屬性,進行查看。
程序內的漢字常量(雙引號內的漢字)的編碼方式取決於 文件本身。 文件默認 。
7.總結
- 是個超級小的字符編碼,但是常用的符號,如空格、換行等,皆包含其內。並且,這是國際標準,所以其餘的編碼方案几乎都沒有改動已有的 對應方案。
- 是存儲全世界通用編碼 的方案。存儲 碼包含的字符,只需要一個字節;存儲漢字,需要三個字節。所以, 可以存儲中文。
- 都是漢字編碼方式。與 是獨立的。雙字節,專門管中文,遇到日文就有點捉急了。
- 判斷中文的方法:對於 ,使用 即可;對於 怎麼辦?