String 如何打开名为𤭢;的文件;。txt与CreateFile()API函数?

String 如何打开名为𤭢;的文件;。txt与CreateFile()API函数?,string,winapi,unicode,filenames,createfile,String,Winapi,Unicode,Filenames,Createfile,某些Unicode字符的代码点(如此类字符由表示。需要两个宽字符元素来表示该代码点。因此,您只需调用CreateFile传递必要的代理项对。当然,您需要使用CreateFile的宽变量 大概您不会在代码中硬编码这样的文件名。在这种情况下,您将从文件对话框、FindFirstFile等处获取该文件。这些API将为您提供适当的文件UTF-16编码缓冲区。您的意思是CreateFile()总是采用UTF-16编码的字符串,但由于大多数常用字符串的UTF-16编码本身就是简单的字符串,我们感觉不到这一点

某些Unicode字符的代码点(如此类字符由表示。需要两个宽字符元素来表示该代码点。因此,您只需调用CreateFile传递必要的代理项对。当然,您需要使用CreateFile的宽变量


大概您不会在代码中硬编码这样的文件名。在这种情况下,您将从文件对话框、
FindFirstFile
等处获取该文件。这些API将为您提供适当的文件UTF-16编码缓冲区。

您的意思是
CreateFile()
总是采用UTF-16编码的字符串,但由于大多数常用字符串的UTF-16编码本身就是简单的字符串,我们感觉不到这一点,当传递包含这些复杂字符的字符串时,它就会起作用?UTF-16编码是一种可变宽度编码。一些代码点用一个字符单位编码,一些代码点用两个字符单位编码racter units。阅读代理项对的主题。我给了你一个维基百科链接。我阅读了你的链接。我想学习
CreateFileW()的行为
。它总是采用UTF-16编码形式的
lpFileName
参数吗?或者我必须先做一些事情来切换到这种模式吗?是的,
CreateFileW
接收UTF-16编码的文件名。这是Windows的惯例。
W
后缀函数处理UTF-16数据。事实上,Windows本身就是一个UTF-16系统。Thanks,这也帮助我解决了Python Win32file.CreateFile的问题。