雙位元組字元集
雙位元組字元集
雙位元組字元集,指的是兩個位元組一起(稱作首位元組和跟隨位元組)定義一個字元,通常是一個複雜的象形文字。
迄今為止,我們已經看到了256個字元的字元集。但中國、日本和韓國的象形文字元號有大約21,000個。如何容納這些語言而仍保持和ASCII的某種相容性呢?
解決方案(如果這個說法正確的話)是雙位元組字元集(DBCS:double-byte character set)。DBCS從256代碼開始,就像ASCII一樣。與任何行為良好的內碼錶一樣,最初的128個代碼是ASCII。然而,較高的128個代碼中的某些總是跟隨著第二個位元組。這兩個位元組一起(稱作首位元組和跟隨位元組)定義一個字元,通常是一個複雜的象形文字。
雖然中文、日文和韓文共用一些相同的象形文字,但顯然這三種語言是不同的,而且經常是同一個象形文字在三種不同的語言中代表三件不同的事。Windows支援四個不同的雙位元組字元集:內碼錶932(日文)、936(簡體中文)、949(韓語)和950(繁體漢字)。只有為這些國家(地區)生產的Windows版本才支援DBCS。
雙字元集問題並不是說字元由兩個位元組代表。問題在於一些字元(特別是ASCII字元)由1個位元組表示。這會引起附加的程式設計問題。例如,字串中的字元數不能由字串的位元組數決定。必須剖析字串來決定其長度,而且必須檢查每個位元組以確定它是否為雙位元組字元的首位元組。如果有一個指向DBCS字串中間的指標,那麼該字串前一個字元的位址是什麼呢?慣用的解決方案是從開始的指標分析該字串!