MultiByteToWideChar[多字節(jié)轉(zhuǎn)寬字符]詳解_第1頁
MultiByteToWideChar[多字節(jié)轉(zhuǎn)寬字符]詳解_第2頁
MultiByteToWideChar[多字節(jié)轉(zhuǎn)寬字符]詳解_第3頁
MultiByteToWideChar[多字節(jié)轉(zhuǎn)寬字符]詳解_第4頁
MultiByteToWideChar[多字節(jié)轉(zhuǎn)寬字符]詳解_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、MultiByteToWideChar函數(shù)功能:該函數(shù)映射一個(gè)字符串到一個(gè)寬字符(unicode )的字符串。由該函數(shù)映射的字符串沒必要是多字節(jié)字符組。(此函數(shù)把多字節(jié)字符串轉(zhuǎn)換成寬字符串(Unicode),待轉(zhuǎn)換的字符串并不一定是多字節(jié)的。)函數(shù)原型:int MultiByteToWideChar(UINT CodePage,DWORD dwFlags,LPCSTR lpMultiByteStr,int cchMultiByte,LPWSTR lpWideCharStr,int cchWideChar);補(bǔ)充:如果ANSI代碼頁允許在不同的計(jì)算機(jī)上不相同,甚至在單臺(tái)計(jì)算機(jī)上不一 樣,將會(huì)導(dǎo)致

2、數(shù)據(jù)崩潰。為了代碼頁一致性,應(yīng)用程序應(yīng)該使用Unicode編碼,如UTF-8或者UTF-1G而不是使用特殊的代碼頁,除了早期標(biāo)準(zhǔn)或者數(shù)據(jù) 格式化不允許使用Unicode編碼。在特殊情況下,有些函數(shù)不允許使用Unicode編碼,應(yīng)用程序應(yīng)在協(xié)議充許的情況下在數(shù)據(jù)流中用合適的編碼名稱標(biāo)識。在 HTML、XML、HTTP等文件中都允許標(biāo)識,但 TEXT本不允許這樣做。參數(shù):CodePage指定執(zhí)行轉(zhuǎn)換的代碼頁,這個(gè)參數(shù)可以為系統(tǒng)已安裝或有效的 任何代碼頁所給定的值。你也可以指定其為下面的任意一值:(我想最常用的應(yīng)該是CP_AC環(huán)口 CP_UTF8T,前者將寬字符轉(zhuǎn)換為ANSI后者轉(zhuǎn)換為UTF8。 )

3、CP_ACPCP_MACCPCP_OEMCPCP_SYMBOLCP_THREAD_ACPCP_UTF7CP_UTF8AN班碼頁Macintosh 代碼頁OEM 代碼頁符號代碼頁(42)當(dāng)前線索ANSI代碼頁使用UTF-7轉(zhuǎn)使用UTF-8轉(zhuǎn)換dwFlags:指定是否轉(zhuǎn)換成預(yù)制字符或合成的寬字符,對控制字符是否使用像形文字,以及怎樣處理無效字符??偸鞘褂妙A(yù)制字符,即有單個(gè)預(yù)制字符時(shí),就不會(huì)使用分解的基MB_PRECOMPOSED符和不占空間字符。此為函數(shù)的默認(rèn)選項(xiàng),不能和MB_COMPOSIT合用MB_COMPOSITEMB_ERR_INVALID_CHA嗡是使用分解字符,即總是使用基字符 +不占

4、空間 字符的方式設(shè)置此選項(xiàng),函數(shù)遇到非法字符就失敗并返回錯(cuò)誤碼ERROR_NO_UNICODE_TRANSLA ION貝U丟棄非法字符MB_USEGLYPHCHARS用像形字符代替控制字符注意:組合字符由一個(gè)基礎(chǔ)字符和一個(gè)非空字符構(gòu)成,每一個(gè)都有不同的字符值。每個(gè)預(yù)作字符都有單一的字符值給基礎(chǔ)/非空字符的組成。在字符3中,e 就是基礎(chǔ)字符,而重音符標(biāo)記就是非空字符。函數(shù)的缺省動(dòng)作是轉(zhuǎn)換成預(yù)作的形式。如果預(yù)作的形式不存在,函數(shù)將嘗試轉(zhuǎn)換成組合形式。標(biāo)記 MB_PRECOMPOSED MB_COMPOSITE!:互斥的,而標(biāo)記 MB_USEGLYPHCHAR SMB_ERR_INVALID_CHA

5、RS 不管其它標(biāo)記如何者 B 可以設(shè) 置。對于下列代碼頁,dwFlags必須為0,否則函數(shù)返回錯(cuò)誤碼 ERROR_INVALID_FLA GS50220 50221 50222 50225 50227 50229 52936 54936 57002到 5701165000(UTF7) 42(Symbo附于 UTFa dwFlags必須為 0 或 MB_ERR_INVALID_CHAR甌則函數(shù)都將失敗并返回錯(cuò)誤碼 ERROR_INVALID_FLA GSlpMultiByteStr:指向?qū)⒈晦D(zhuǎn)換字符串的字符。cchMultiByte :指定由參數(shù)lpMultiByteStr 指向的字符串中字節(jié)的

6、個(gè)數(shù)。如果lpMultiByteStr 指定的字符串以空字符終止,可以設(shè)置為-1(如果字符串不是以空字符中止,設(shè)置為 -1 可能失敗,可能成功),此參數(shù)設(shè)置為 0 函數(shù)將失敗。IpWideCharStr:指向接收被轉(zhuǎn)換字符串的緩沖區(qū)。cchWideChar:指定由參數(shù)IpWideCharStr指向的緩沖區(qū)的字符個(gè)數(shù)。若此值為零,函數(shù)返 回緩沖區(qū)所必需的寬字符數(shù),在這種情況下,lpWideCharStr 中的緩沖區(qū)不被使用。返回值如果函數(shù)運(yùn)行成功,并且 cchWideChar不為零,返回值是由IpWideCharStr 指向的緩沖區(qū)中寫入的寬字符數(shù);如果函數(shù)運(yùn)行成功,并且cchMultiByte

7、 為零,返回值是接收到待轉(zhuǎn)換字符串的緩沖區(qū)所需求的寬字符數(shù)大小。如果函數(shù) 運(yùn)行失敗,返回值為零。若想獲得更多錯(cuò)誤信息,請調(diào)用GetLastError函數(shù)。它可以返回下面所列錯(cuò)誤代碼:ERROR_INSUFFICIENT_BUF;FEERRROR_INVALID_FLA;GS ERROR_INVALID_PARAMET EERROR_NO_UNICODE_TRANSLAT ION注意指針lpMultiByteStr和lpWideCharStr必須不一樣。如果一樣,函數(shù)將失 敗,GetLastError將返回 ERROR_INVALID_PARAMETERt。如果 mb_err_invalid_chaRS設(shè)置并且在資源字符串中遇到無效的字符時(shí),函數(shù)將 失敗。如果MB_ERR_INVALID_CHARS被設(shè)置,或是DBC坤中發(fā)現(xiàn)了頭字節(jié)而 沒有有效的尾字節(jié),無效字符將轉(zhuǎn)換為缺省字符,但不是資源字符串中的缺省 字符。當(dāng)無效字符被發(fā)現(xiàn),且 MB_ERR_INVALID_CHARS被設(shè)置,函數(shù)返回 零,GetLastErro顯示 ERROR_NO_UNICODE_TRANSLATION錯(cuò)信息。Windows CE:不支持參數(shù)CodePage中的CP_UTF7f口 CP_UTF8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論