1樓:匿名使用者
unicode :寬位元組字符集
1. 如何取得一個既包含單位元組字元又包含雙位元組字元的字串的字元個數?
可以呼叫microsoft visual c++的執行期庫包含函式_mbslen來操作多位元組(既包括單位元組也包括雙位元組)字串。
呼叫strlen函式,無法真正瞭解字串中究竟有多少字元,它只能告訴你到達結尾的0之前有多少個位元組。
2. 如何對dbcs(雙位元組字符集)字串進行操作?
函式 描述
ptstr charnext ( lpctstr ); 返回字串中下一個字元的地址
ptstr charprev ( lpctstr, lpctstr ); 返回字串中上一個字元的地址
bool isdbcsleadbyte( byte ); 如果該位元組是dbcs字元的第一個位元組,則返回非0值
3. 為什麼要使用unicode?
(1) 可以很容易地在不同語言之間進行資料交換。
(2) 使你能夠分配支援所有語言的單個二進位制.exe檔案或dll檔案。
(3) 提高應用程式的執行效率。
windows 2000是使用unicode從頭進行開發的,如果呼叫任何一個windows函式並給它傳遞一個ansi字串,那麼系統首先要將字串轉換成unicode,然後將unicode字串傳遞給作業系統。如果希望函式返回ansi字串,系統就會首先將unicode字串轉換成ansi字串,然後將結果返回給你的應用程式。進行這些字串的轉換需要佔用系統的時間和記憶體。
通過從頭開始用unicode來開發應用程式,就能夠使你的應用程式更加有效地執行。
windows ce 本身就是使用unicode的一種作業系統,完全不支援ansi windows函式
windows 98 只支援ansi,只能為ansi開發應用程式。
microsoft公司將com從16位windows轉換成win32時,公司決定需要字串的所有com介面方法都只能接受unicode字串。
4. 如何編寫unicode源**?
microsoft公司為unicode設計了windowsapi,這樣,可以儘量減少**的影響。實際上,可以編寫單個源**檔案,以便使用或者不使用unicode來對它進行編譯。只需要定義兩個巨集(unicode和_unicode),就可以修改然後重新編譯該原始檔。
_unicode巨集用於c執行期標頭檔案,而unicode巨集則用於windows標頭檔案。當編譯源**模組時,通常必須同時定義這兩個巨集。
5. windows定義的unicode資料型別有哪些?
資料型別 說明
wchar unicode字元
pwstr 指向unicode字串的指標
pcwstr 指向一個恆定的unicode字串的指標
對應的ansi資料型別為char,lpstr和lpcstr。
ansi/unicode通用資料型別為tchar,ptstr,lpctstr。
6. 如何對unicode進行操作?
字符集 特性 例項
ansi 操作函式以str開頭 strcpy
unicode 操作函式以wcs開頭 wcscpy
mbcs 操作函式以_mbs開頭 _mbscpy
ansi/unicode 操作函式以_tcs開頭 _tcscpy(c執行期庫)
ansi/unicode 操作函式以lstr開頭 lstrcpy(windows函式)
所有新的和未過時的函式在windows2000中都同時擁有ansi和unicode兩個版本。ansi版本函式結尾以a表示;unicode版本函式結尾以w表示。windows會如下定義:
#ifdef unicode
#define createwindowex createwindowexw
#else
#define createwindowex createwindowexa
#endif // !unicode
7. 如何表示unicode字串常量?
字符集 例項
ansi 「string」
unicode l「string」
ansi/unicode t(「string」)或_text(「string」)if( szerror[0] == _text(『j』) )
8. 為什麼應當儘量使用作業系統函式?
這將有助於稍稍提高應用程式的執行效能,因為作業系統字串函式常常被大型應用程式比如作業系統的外殼程序explorer.exe所使用。由於這些函式使用得很多,因此,在應用程式執行時,它們可能已經被裝入ram。
如:strcat,strchr,strcmp和strcpy等。
9. 如何編寫符合ansi和unicode的應用程式?
(1) 將文字串視為字元陣列,而不是chars陣列或位元組陣列。
(2) 將通用資料型別(如tchar和ptstr)用於文字字元和字串。
(3) 將顯式資料型別(如byte和pbyte)用於位元組、位元組指標和資料快取。
(4) 將text巨集用於原義字元和字串。
(5) 執行全域性性替換(例如用ptstr替換pstr)。
(6) 修改字串運算問題。例如函式通常希望在字元中傳遞一個快取的大小,而不是位元組。這意味著不應該傳遞sizeof(szbuffer),而應該傳遞(sizeof(szbuffer)/sizeof(tchar)。
另外,如果需要為字串分配一個記憶體塊,並且擁有該字串中的字元數目,那麼請記住要按位元組來分配記憶體。這就是說,應該呼叫malloc(ncharacters *sizeof(tchar)),而不是呼叫malloc(ncharacters)。
10. 如何對字串進行有選擇的比較?
通過呼叫comparestring來實現。
標誌 含義
norm_ignorecase 忽略字母的大小寫
norm_ignorekanatype 不區分平假名與片假名字元
norm_ignorenonspace 忽略無間隔字元
norm_ignoresymbols 忽略符號
norm_ignorewidth 不區分單位元組字元與作為雙位元組字元的同一個字元
sort_stringsort 將標點符號作為普通符號來處理
11. 如何判斷一個文字檔案是ansi還是unicode?
判斷如果文字檔案的開頭兩個位元組是0xff和0xfe,那麼就是unicode,否則是ansi。
12. 如何判斷一段字串是ansi還是unicode?
用istextunicode進行判斷。istextunicode使用一系列統計方法和定性方法,以便猜測快取的內容。由於這不是一種確切的科學方法,因此 istextunicode有可能返回不正確的結果。
13. 如何在unicode與ansi之間轉換字串?
windows函式multibytetowidechar用於將多位元組字串轉換成寬字串;函式widechartomultibyte將寬字串轉換成等價的多位元組字串。
2樓:雲天英雄
你安裝的時候是不是使用了中文的名稱
關於中非友誼的事蹟,關於中非友誼的事蹟二十字
高階營養師木木 如果將中非合作50多年的歷史比作一幅畫卷的話,政治支援 無私援助 投資 基礎設施援建 援外醫療等等或許是其上的片片雲彩 朵朵繁花。但半個多世紀以來,每一天 每一月 每一年,都有看似平凡的中非民眾,用自己的人生軌跡,續寫著這幅歷史畫卷。即便不夠光鮮亮麗,仍值得細細品味。關於中非友誼的事...
怎麼安裝sql server
1點選安裝程式,選擇 全新sql server 獨立安裝或向現有安裝新增功能 2選擇 sql server 的安裝金鑰。3在產品更新這一頁中,忽略windows update 搜尋更新服務,直接單擊下一步。4安裝程式規則性檢查。5設定角色中,選擇第一項sql server功能安裝。6選擇所需安裝的資...
cwinform對sqlserver裡面資料進行增刪改操作
連線資料庫的 寫在父類裡面 其他方法繼承就好了 還是你的意思是保持資料庫連線? 你可以寫一個類啊,比如 using system using system.collections.generic using system.linq using system.web using system.data...