天天看點

VS2008 Unicode和多位元組編碼差別

unicode和多位元組字元集是兩種不同的編碼方式,不同的編碼方式下,所對應的一些函數是不相容的。
一種編碼格式,Unicode 2個位元組表示所有的字元,多位元組是一個位元組表示英文,兩個就表示漢字

如果你新的工程是Unicode的,就用Unicode開發,摒棄多位元組編碼,多位元組編碼弊端太多了。

其實改起來很簡單,你把所有的char都改成TCHAR,如果能用CString,盡量用CString。所有字元串函數都換上帶_t的版本,比如_tsprintf()、_tcscpy之類的……因為這些東西都是同時相容Unicode和ANSI的,是以改起來很容易。

工程到底會以哪種編碼方式去編碼,是根據根據“項目屬性”中配置的預編譯宏UNICODE來決定的。 STL裡面的string,封裝的是單位元組字元,由于其跨平台的特 性, 任何支援标準C++的平台都可以使用它,需要字元轉換時轉換即可。建議多使用std::string。

VS2008 Unicode和多位元組編碼差別
VS2008 Unicode和多位元組編碼差別

============================== unicode和UTF-8的關系

unicode 是一種編碼表格,例如,給一個漢字規定一個代碼。類似 GB2312-1980, GB18030等,隻不過字集不同。 

一個unicode碼可能轉成長度為一個BYTE,或兩個,三個,四個BYTE的UTF8碼,取決于unicode碼的值。      
而英文unicode碼因為值小于0x80,隻要用一個BYTE的UTF8傳送,比傳輸unicode兩個BYTEs快。 
UTF8并不是一種編碼方式,而隻是一種傳送和存儲的格式。是為傳輸unicode而想出來的“再編碼”方法罷了。       
其實沒有太大的差別,隻是在作網站時,那些網頁文本一般要儲存為utf-8,這樣就不會出現亂碼。      

多位元組編碼與UTF8編碼的轉換,請參考:http://www.doc88.com/p-182436917988.html