在Windows应用程序中保存文件时指定编码

在Windows应用程序中保存文件时指定编码,windows,winapi,file-io,file,character-encoding,Windows,Winapi,File Io,File,Character Encoding,我正在编写一个程序,主要处理Unicode文本。C标准库函数“fopen”通过在模式字符串参数“…,ccs=utf-8”中包含字符,以utf-8格式将字符写入文件。Windows API“CreateFile”似乎给出了这样的规定。那么我必须使用“fopen”吗?这是特定于在Windows下使用Visual Studio和Microsoft工具进行编程的。我个人的建议是不要将fopen和扩展语法一起使用,否则以后将应用程序移植到其他操作系统时会出现兼容性问题。在Windows下,使用Window

我正在编写一个程序,主要处理Unicode文本。C标准库函数“fopen”通过在模式字符串参数“…,ccs=utf-8”中包含字符,以utf-8格式将字符写入文件。Windows API“CreateFile”似乎给出了这样的规定。那么我必须使用“fopen”吗?

这是特定于在Windows下使用Visual Studio和Microsoft工具进行编程的。我个人的建议是不要将fopen和扩展语法一起使用,否则以后将应用程序移植到其他操作系统时会出现兼容性问题。在Windows下,使用Windows方式,使用CreateFile。

这特定于在Windows下使用Visual Studio和Microsoft工具进行编程。我个人的建议是不要将fopen和扩展语法一起使用,否则以后将应用程序移植到其他操作系统时会出现兼容性问题。在Windows下,使用Windows方式,使用CreateFile。

文件内容不是由文件打开功能定义的,而是由您写入的实际数据定义的。获得文件句柄(通过fopen或CreateFile)后,可以使用UTF-8、ANSI或任何您喜欢的语言编写


请注意,某些编码要求在文件开头有一个特殊的位。

文件的内容不是由文件打开功能定义的,而是由您写入的实际数据定义的。获得文件句柄(通过fopen或CreateFile)后,可以使用UTF-8、ANSI或任何您喜欢的语言编写


请注意,某些编码要求在文件开头有一个特殊的位。

CreateFile
创建一个文件,顾名思义。它不会向其中写入数据。你需要一个不同的函数。我不确定我是否理解你的问题。
CreateFile
创建了一个文件,顾名思义。它不会向其中写入数据。你需要一个不同的函数。我不确定我是否理解你的问题。真正让“fopen”方便的是,我可以将一个16位的值分配给一个wchar\u t变量,并将其直接写入使用utf-8编码打开的文件。当用utf-8编码时,16位Unicode值可能会扩展到24位,但写入时不会有任何麻烦。我也不需要像BOM这样的特殊部件。我在Windows和Linux中编写过类似的简单程序。相同的代码。“fopen”的便利之处在于,我可以将一个16位的值赋给一个wchar\u t变量,并将其直接写入使用utf-8编码打开的文件中。当用utf-8编码时,16位Unicode值可能会扩展到24位,但写入时不会有任何麻烦。我也不需要像BOM这样的特殊部件。我在Windows和Linux中编写过类似的简单程序。相同的代码。工作相似。