字元編碼(ANSI,UTF 8,BINCODE)

2021-05-24 14:12:49 字數 1857 閱讀 1499

有三種編碼方式和三種字元型別。

第一種編碼方式是單位元組字符集,稱之為sbcs,它的所有字元都只有乙個位元組的長度。ascii碼就是sbcs。sbcs字串由乙個零位元組結尾。

第二種編碼方式是多位元組字符集,稱之為mbcs,它包含的字元中有單位元組長的字元,也有多位元組長的字元。windows用到的mbcs只有二種字元型別,單位元組字元和雙位元組字元。因此

windows中用得最多的字元是雙位元組字符集,即dbcs,通常用它來代替mbcs。

在dbcs編碼中,用一些保留值來指明該字元屬於雙位元組字元。例如,shift-jis(通用日語)編碼中,值0x81-0x9f 和 0xe0-0xfc 的意思是:「這是乙個雙位元組字元,下乙個位元組是這個字

符的一部分」。這樣的值通常稱為前導位元組(lead byte),總是大於0x7f。前導位元組後面是跟隨位元組(trail byte)。dbcs的跟隨位元組可以是任何非零值。與sbcs一樣,dbcs字串也由乙個零字

節結尾。

第三種編碼方式是unicode。 unicode編碼標準中的所有字元都是雙位元組長。有時也將unicode稱為寬字符集(wide characters),因為它的字元比單位元組字元更寬(使用更多記憶體)。注意,

unicode不是mbcs - 區別在於mbcs編碼中的字元長度是不同的。unicode字串用二個零位元組字元結尾(乙個寬字元的零值編碼)。

單位元組字符集是拉丁字母,重音文字,用ascii標準定義,用於dos作業系統。

雙位元組字符集用於東亞和中東語言。

unicode用於com和windows nt內部。

讀者都很熟悉單位元組字符集,它的資料型別是char。

雙位元組字符集也使用char資料型別(雙位元組字符集中的許多古怪處之一)。

unicode字符集用wchar_t資料型別。unicode字串用l字首起頭,如:

wchar_t wch = l'1';      // 2 個位元組, 0x0031

wchar_t* wsz = l"hello"; // 12 個位元組, 6 個寬字元

**頁(code page)是個古老的專業術語,據說是ibm公司首先使用的。**頁和字符集的含義基本相同,**頁規定了適用於特定地區的字元集合,和這些字元的編碼。可以將**頁理解

為字元和位元組資料的對映表。

windows為自己支援的**頁都編了乙個號碼。例如**頁936就是簡體中文 gbk,**頁950就是正體中文 big5。**頁的概念比較簡單,就是乙個字元編碼方案。但要說清楚windows的

ansi**頁,就要從windows的區域(locale)說起了。

轉換://將單位元組char*轉化為寬位元組wchar_t*

wchar_t* ansitounicode( const char* szstr )

wchar_t* presult = new wchar_t[nlen];

multibytetowidechar( cp_acp, mb_precomposed, szstr, -1, presult, nlen );

return presult;

}//將寬位元組wchar_t*轉化為單位元組char*

char* unicodetoansi( const wchar_t* szstr )

char* presult = new char[nlen];

widechartomultibyte( cp_acp, 0, szstr, -1, presult, nlen, null, null );

return presult;

}// utf-8轉unicode

wchar_t* utf8tounicode(const char* buf)

// unicode轉unt-8

char* unicodetoutf8(const wchar_t* buf)

字元編碼 ASCII Unicode UTF 8

ascii編碼 ascii american standard code for information interchange,美國資訊交換標準 它主要用於顯示現代英語和其他西歐語言。ascii至今為止共定義了128個字元,其中包括95個可顯示字元和33個無法顯示的控制字元 多數都已經廢除 在計算...

8 Python字元編碼

三 字元編碼的介紹 四 字元編碼的應用 2.1 三大核心硬體的回憶 1 軟體執行前,軟體的 及其相關資料都是存放於硬碟中的 2 任何軟體的啟動都是將資料從硬碟中讀入記憶體,然後cpu從記憶體中取出指令並執行 3 軟體執行過程中產生的資料最先都是存放於記憶體中的,若想永久儲存軟體產生的資料,則需要將資...

字元編碼之UTF 8

博學,切問,近思 詹子知 http blog.csdn.net zhiqiangzhan utf 8 8 位元 universal character set unicode transformation format 是一種針對unicode的可變長度字元編碼。utf 8 是一種傳輸編碼,他和定長...