C 自然語言編碼詳解系列一(字元編碼基礎)

2021-04-14 05:40:21 字數 1166 閱讀 2802

三種編碼型別

第一種編碼型別是單位元組字符集(single-byte character set or sbcs)。在這種編碼模式下,所有的字元都只用乙個位元組表示。ascii是sbcs。乙個位元組表示的0用來標誌sbcs字串的結束。

第二種編碼模式是多位元組字符集(multi-byte character set or mbcs)。乙個mbcs編碼包含一些乙個位元組長的字元,而另一些字元大於乙個位元組的長度。用在windows裡的mbcs包含兩種字元型別,單位元組字元(single-byte characters)和雙位元組字元(double-byte characters)。由於windows裡使用的多位元組字元絕大部分是兩個位元組長,所以mbcs常被用dbcs代替。

在dbcs編碼模式中,一些特定的值被保留用來表明他們是雙位元組字元的一部分。例如,在shift-jis編碼中(乙個常用的日文編碼模式),0x81-0x9f之間和 0xe0-oxfc之間的值表示"這是乙個雙位元組字元,下乙個位元組是這個字元的一部分。"這樣的值被稱作"leading bytes",他們都大於0x7f。跟隨在乙個leading byte位元組後面的位元組被稱作"trail byte"。在dbcs中,trail byte可以是任意非0值。像sbcs一樣,dbcs字串的結束標誌也是乙個單位元組表示的0。

第三種編碼模式是unicode。unicode是一種所有的字元都使用兩個位元組編碼的編碼模式。unicode字元有時也被稱作寬字元,因為它比單位元組字元寬(使用了更多的儲存空間)。注意,unicode不能被看作mbcs。mbcs的獨特之處在於它的字元使用不同長度的位元組編碼。unicode 字串使用兩個位元組表示的0作為它的結束標誌。

單位元組字元包含拉丁文本母表,accented characters及ascii標準和dos作業系統定義的圖形字元。雙位元組字元被用來表示東亞及中東的語言。unicode被用在com及windows nt作業系統內部。

你一定已經很熟悉單位元組字元。當你使用char時,你處理的是單位元組字元。雙位元組字元也用char型別來進行操作(這是我們將會看到的關於雙位元組字元的很多奇怪的地方之一)。unicode字元用wchar_t來表示。unicode字元和字串常量用字首l來表示。例如:

wchar_t wch = l''1''; // 2 bytes, 0x0031

wchar_t* wsz = l"hello"; // 12 bytes, 6 wide characters

mysql全域性編碼 mysql 統一字元編碼

配置檔案中的注釋可以有中文,但是配置項中不能出現中文 在mysql的解壓目錄下,新建my.ini,然後配置 1.在執行mysqld命令時,下列配置會生效,即mysql服務啟動時生效 mysqld skip grant tables port 3306 character set server utf...

亂碼之一 字符集編碼錯誤

abcd四人打撲克牌賭博,賭博之前ab私下有約,通過打手勢的方式告知對方自己手裡的關鍵牌,從而達到雙贏的合作.協定 伸出大拇指就表示大王在誰手裡,伸出小拇指就表示小王在誰手裡 現場 當a拿到大王時,伸出大拇指 編碼 加密 b看到a伸出大拇指,根據合約知道a拿有大王 解碼 解密 專案 計算機打撲克 二...

OCR系列之一 字元識別技術總覽

最近入坑研究ocr,看了比較多關於ocr的資料,對ocr的前世今生也有了乙個比較清晰的了解。所以想寫一篇關於ocr技術的綜述,對ocr相關的知識點都好好總結一遍,以加深個人理解。如果要給ocr進行分類,我覺得可以分為兩類 手寫體識別和印刷體識別。這兩個可以認為是ocr領域兩個大主題了,當然印刷體識別...