規範化程式設計 ANSI和UNICODE的使用

2022-09-16 15:42:19 字數 1498 閱讀 5141

到底什麼是ansi,什麼是unicode呢?

其實這是兩種不同的編碼方式標準,ansi中的字元採用8bit,而unicode中的字元採用16bit。

8bit的ansi編碼只能表示256種字元,表示26個英文本母是綽綽有餘的,但是表示漢字,南韓語,日語等有著成千上萬個字元的非西方字元肯定就不夠了,正是如此才引入了unicode標準。

在軟體開發中,特別是使用c語言的一些有關字串處理的函式,ansi和unicode是區分是用的,那麼ansi型別的字元和unicode型別的字元如何定義,如何使用呢?ansi和unicode又如何轉換呢?

一.定義部分:

ansi:    char str[1024];  

unicode:  wchar_t str[1024];

二.可用函式:

ansi:    即 char, 可用字串處理函式:strcat( ),strcpy( ), strlen( )等以str打頭的函式。

unicode:  即wchar_t 可用字串處理函式:wcscat(),wcscpy(),wcslen()等以wcs打頭的函式。

三.系統支援:

windows 98 :只支援ansi。

windows 2k :既支援ansi又支援unicode。

windows ce :只支援unicode。

說明1. 在com裡面只支援unicode。

2. windows 2000整個os系統都是基於unicode的,為此在windows 2000下使用ansi是需要付出代價的,雖然在編碼上不用任何的轉換,但是這種轉化是隱藏的,是占用系統資源的(cpu,記憶體)。

3. windows 98下必須使用到unicode的地方,則需要自己手動的編碼切換。

四.如何區分:

在我們軟體開發中往往需要即支援ansi又支援unicode,不可能在要求型別轉換的時候,重新改變字串的型別,和使用於字串上的操作函式。為此, 標準的c 執行期庫和windows 提供了巨集定義的方式。

在c語言裡面提供了 _unicode巨集(有下劃線),在windows裡面提供了unicode巨集(無下劃線),只要定了_unicode巨集和unicode巨集,系統就會自動切換到unicode版本,否則,系統按照ansi的方式進行編譯和執行。

只定義了巨集並不能實現自動的轉換,他還需要一系列的字元定義支援。

1. tchar

如果定義了unicode巨集則tchar被定義為wchar_t。

typedef wchar_t     tchar;

否則tchar被定義為char

typedef char            tchar;

2. lptstr

如果定義了unicode巨集則lptstr被定義為lpwstr。

typedef lptstr     lpwstr;

否則lptstr被定義為lpstr

typedef lptstr     lpstr;

_t()和_l()的區別在於,_l不管你是以什麼方式編譯,一律以以 unicode方式儲存。 

轉 規範化程式設計 ANSI和UNICODE的使用

到底什麼是ansi,什麼是unicode呢?其實這是兩種不同的編碼方式標準,ansi中的字元採用8bit,而unicode中的字元採用16bit。8bit的ansi編碼只能表示256種字元,表示26個英文本母是綽綽有餘的,但是表示漢字,南韓語,日語等有著成千上萬個字元的非西方字元肯定就不夠了,正是如...

資料規範化

資料分析之前,我們通常需要先將資料標準化 normalization 利用標準化後的資料進行資料分析。資料標準化也就是統計資料的指數化。資料標準化處理主要包括資料同趨化處理和無量綱化處理兩個方面。資料同趨化處理主要解決不同性質資料問題,對不同性質指標直接加總不能正確反映不同作用力的綜合結果,須先考慮...

資料規範化

資料歸一化是指把資料壓縮到 0,1 的區間內。sklearn.preprocessing.minmaxscalar 將資料壓縮到min到max組成的區間,並使其結果落在0到1的範圍內。x x mi nmax min sklearn.preprocessing.standardscalar 將資料轉換...