簡體   English   中英

Windows API ANSI函數和UTF-8

[英]Windows API ANSI functions and UTF-8

是否可以使用帶有UTF-8字符串的Windows API ANSI函數?

例如,假設我有一個以UTF-8編碼的路徑。 我可以調用CreateDirectoryACreateFileA並使用UTF-8路徑,還是在調用函數之前必須執行一些轉換?

MultiByteToWideChar 。使用MultiByteToWideChar將UTF-8轉換為UTF-16,然后調用寬字符API,如CreateDirectoryWCreateFileW

一種比使用原始Win32 API MultiByteToWideChar更簡單的方法是使用ATL轉換助手 ,如CA2CW 您可以將CP_UTF8指定為代碼頁(構造函數中的第二個參數),以便將Unicode UTF-8轉換為Unicode UTF-16:

CreateDirectoryW( 
  CA2W( utf8Name, CP_UTF8 ) // convert from UTF-8 to UTF-16
  ... // other stuff
);

請注意,在Unicode構建中(這些天應該是默認構建),CreateDirectory只是擴展到CreateDirectoryW,所以我只需刪除結尾“W”並使用(恕我直言,更易讀)CreateDirectory:

CreateDirectory( 
  CA2W( utf8Name, CP_UTF8 ) // convert from UTF-8 to UTF-16
  ... // other stuff
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM