我們在這裡介紹一下字元型別。這裡有3種編碼模式對應3種字元型別。
第一種編碼型別是單子節字符集(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(double-byte character set or dbcs)代替。
在dbcs編碼模式中,一些特定的值被保留用來表明他們是雙位元組字元的一部分。例如,在shift-jis編碼中(乙個常用的日文編碼模式),0x81-0x9f之間和 0xe0-oxfc之間的值表示"這是乙個雙位元組字元,下乙個子節是這個字元的一部分。"這樣的值被稱作"leadingbytes",他們都大於0x7f。跟隨在乙個leading byte子節後面的位元組被稱作"trail byte"。在dbcs中,trail byte可以是任意非0值。像sbcs一樣,dbcs字串的結束標誌也是乙個單位元組表示的0。
第三種編碼模式是unicode。unicode是一種所有的字元都使用兩個位元組編碼的編碼模式。unicode字元有時也被稱作寬字元(wide character),因為它比單子節字元寬(使用了更多的儲存空間)。注意,unicode不能被看作mbcs。mbcs的獨特之處在於它的字元使用不同長度的位元組編碼。unicode字串使用兩個位元組表示的
0作為它的結束標誌。
單位元組字元包含拉丁文本母表,accented characters及ascii標準和dos作業系統定義的圖形字元。雙位元組字元被用來表示東亞及中東的語言。unicode被用在com及windows nt作業系統內部。
你一定已經很熟悉單位元組字元。當你使用char時,你處理的是單位元組字元。雙位元組字元也用char型別來進行操作(這是我們將會看到的關於雙子節字元的很多奇怪的地方之一)。unicode字元用wchar_t來表示。unicode字元和字串常量用字首l來表示。
多位元組字符集和寬位元組字符集區別
多位元組字符集 字元編碼可能是1個位元組 也可能是2個位元組 ascii碼占用1個位元組儲存 中文 unicode 等 占用2個位元組 it學吧 16進製制編碼 73 84 47 89 80 55 0 16進製制最高位為1 代表負數 當存在負數則會把兩個負數當做乙個中文字元 73 i 1位元組 84...
寬位元組字符集和多字符集
unicode 寬位元組字符集 1.如何取得乙個既包含單位元組字元又包含雙位元組字元的字串的字元個數?可以呼叫microsoft visual c 的執行期庫包含函式 mbslen來操作多位元組 既包括單位元組也包括雙位元組 字串。呼叫strlen函式,無法真正了解字串中究竟有多少字元,它只能告訴你...
多位元組字符集 MBCS
visual c 支援多位元組字符集 mbcs 多位元組字符集 mbcs 是一種替代 unicode 以支援無法用單位元組表示的字符集 如日文和中文 的方法。為國際市場程式設計時應考慮使用 unicode 或 mbcs,或使程式能夠通過更改開關來生成支援兩種字符集之一的程式。最常見的 mbcs 實現...