共用方式為


SHAnsiToUnicode 函式 (shlwapi.h)

[此功能可透過 Windows XP 和 Windows Server 2003 使用。 它可能會在後續版本的 Windows 中被更改或無法使用。

將字串從 ANSI 字碼頁轉換為 Unicode 字碼頁。

語法

int SHAnsiToUnicode(
  [in]  PCSTR pszSrc,
  [out] PWSTR pwszDst,
        int   cwchBuf
);

參數

[in] pszSrc

類型: PCSTR

要轉換成 Unicode 之 Null 結尾 ANSI 字串的指標。

[out] pwszDst

類型: PWSTR

緩衝區的指標,當此函式成功傳回時,會在 ANSI 字元轉換成 Unicode (WCHAR) 之後,接收 pszSrc 所指定的字串。 緩衝區必須足夠大,才能包含 cwchBuf 參數所指定的 Unicode 字元數目,包括終止空值字元。

cwchBuf

類型: int

pwszDst 所指向的緩衝區可以包含的 Unicode 字元數目。 此參數必須大於零。

返回值

類型: int

傳回寫入 pwszDst 的 Unicode 字元數目,包括終止的 Null 字元。 如果不成功,則傳回 0。

備註

安全警告: 不正確地使用此功能可能會危及應用程式的安全性。 例如,如果 pwszDst 緩衝區不夠大,無法包含 cwchBuf 所指定的字元數目,則可能會發生緩衝區溢出。 如果發生存取違規,緩衝區滿溢可能會導致對應用程式進行阻斷服務攻擊。 在最壞的情況下,緩衝區滿溢可能會讓攻擊者將可執行程式代碼插入您的進程,特別是當 pwszDst 是堆疊型緩衝區時。 複製整個字串時,請注意 sizeof 會傳回位元組數,這不是用於 cwchBuf 參數的正確值。 請改用 sizeof(pwszDst)/sizeof(WCHAR)。 請注意,此技術假設 pwszDst 是陣列,而不是指標。

如果 pwszDst 緩衝區不夠大,無法包含整個轉換的輸出字串,則會截斷字串以符合緩衝區。 無法偵測傳回字串是否已截斷。 字串一律以 Null 結尾,即使它已被截斷也一樣。 這可確保複製到 pwszDst 的字元不超過 cwchBuf。 不會嘗試避免截斷 Unicode 代理配對中間的字串。

如果 pszSrcpwszDst 緩衝區重疊,則函式的行為會未定義。

便條 請勿假設函式尚未變更字串終止 Null 字元後面的輸出緩衝區中任何字元。 字串終止 Null 字元之後的輸出緩衝區內容是未定義的,最多包含緩衝區中的最後一個字元。
 
SHAnsiToTChar 的定義與 SHAnsiToUnicode 相同。

需求

Requirement 價值觀
最低支援的用戶端 Windows 2000 專業版、Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server、Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
Header 什爾瓦皮.h
Library mincore_downlevel.lib
DLL Shlwapi.dll(5.0 版或更新版本)

另請參閱

MultiByteToWideChar

字串Cb複製

字串Cb複製Ex

字串CbCopyN

字串CbCopyNEx

字串Cb長度

字串Cch複製

字串CchCopyEx

字串CchCopyN

字串CchCopyNEx

字串Cch長度