C 的字符集設定

2022-04-28 21:51:14 字數 2041 閱讀 8896

**:

今天在使用vs2010+mfc時候,使用(lpwstr)發生報錯。

其解決方案就是, 在專案屬性->常規->專案預設值->字符集裡面,將使用unicode字符集換為:使用多位元組字符集就ok了。 原因:

typedef lpctstr lptstr ;

#ifndef _unicode typedef tchar char;

#else typedef tchar wchar_t;

#endif typedef lptstr const tchar*;

看到一篇很好的講字符集(charset)**過來。。感謝freebot樓主。

lpstr、lpcstr、lptstr和lpctstr的意義及區別

1、ansi(即mbcs):為多位元組字符集,它是不定長表示世界文字的編碼方式。ansi表示英文本母時就和

ascii一樣,但表示其他文字時就需要用多位元組。

2、unicode:用兩個位元組表示乙個字元的編碼方式。比如字元'a'在ascii下面用乙個位元組表示,而在

unicode下面用兩個位元組表示,其中高位元組用「0」填充;函式'程'在ascii下面用兩個位元組表示,而在

unicode下面也是用兩個位元組表示。unicode的用處就是定長表示世界文字,據統計,用兩個位元組可以編碼

現存的所有文字而沒有二義。

3、windows下的程式設計可以支援ansi和unicode兩種編碼方法的字串,具體使用哪種就要看定義了

mbcs巨集還是unicode巨集。mbcs巨集對應的字串指標為lpstr(即char*),unicode對應的指標為

lpwstr(即unsigned char*)。為了寫程式的方便,微軟定義了型別lptstr,在mbcs下它表示char*,

在unicode下它表示unsigned char*,這就可以重定義乙個巨集進行不同字符集的轉換了。

4、關係

lpstr:指向乙個字串的32位指標,每個字元佔1個位元組。

lpcstr:指向乙個常量字串的32位指標,每個字元佔1個位元組。

lptstr:指向乙個字串的32位指標,每個字元可能佔1個位元組或2個位元組。

lpctstr:指向乙個常量字串的32位指標,每個字元可能佔1個位元組或2個位元組。

5、windows使用兩種字符集ansi和unicode,前者在處理英文本元時使用單位元組方式,在處理中文字元時

使用雙位元組方式。後者不管是英文本元還是中文字元都是採用雙位元組方式表示。windows nt的所有與字元

有關的函式都提供了兩種方式的版本,而windows 9x只支援ansi方式。_t一般同字元常量相關,如_t("你

好!");。如果編碼方式為ansi,_t不起任何作用;如果編碼方式為unicode,編譯器會把"你好!"以

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

6、l表示字串資源採用unicode編碼方式,示例如下:

wchar_t str=l"hello world!"; //每個字元都用2個位元組來儲存

7、_t是乙個適配巨集。當定義了_unicode時,_t和l相同;否則,_t的字串採用ansi編碼方式。示例如

下:lptstr lptstr=new tchar[32];

tchar* szbuf=_t("hello");

以上兩個語句,無論是在ansi編碼方式,還是在unicode編碼方式下都是正確的。

8、微軟推薦使用相匹配的字串函式。例如,在處理lptstr或lpctstr的時候,應該使用_tcslen來替

代strlen函式。否則,在unicode編碼方式下,strlen不能處理wchar_t*的字串。

9、t是乙個非常重要的符號(tchar、lptstr、lpctstr、_t()和_text()等),它表示使用乙個中間

型別,既不明確表示使用mbcs,也不明確表示使用unicode。到底使用哪種字符集,在編譯的時候才決

定。10、cstring型別到lptstr型別的轉換

cstring path1;

lptstr path2=path1.getbuffer(path1.getlenght());

HTML設定字符集

html設定字符集 meta http equiv content type html字符集用於說明html頁面的內容所使用的文字和語言。html語言用於告訴瀏覽器該以什麼內碼 什麼語言來顯示網頁。錯誤的設定網頁的字符集會導致頁面出現亂碼的現象。語法 說明 http equiv傳送http通訊協議的...

mysql字符集設定

show variables like char show variables like collation 2.修改編碼 set variable name value set character set connection utf8 3 顯示建立資料庫資訊 show create databa...

設定PL SQL Developer 字符集

設定pl sql developer 字符集 2011 01 06 14 45 我安裝的是plsql developer 版本7.1.4 綠色版,執行sql發現彈出的錯誤提示對話方塊都是?表示,顯示不出正確的提示資訊。後來才明白是跟伺服器的字符集不匹配的問題。方法如下 1 查詢oracle serv...