【问题标题】:Specifying the encoding when saving a file in a Windows app在 Windows 应用程序中保存文件时指定编码
【发布时间】:2011-03-16 12:15:58
【问题描述】:

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

【问题讨论】:

  • CreateFile 创建一个文件,顾名思义。它不会向其写入数据。你需要一个不同的功能。我不确定我是否理解您的问题。

标签: windows winapi file-io file character-encoding


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 真正让 'fopen' 方便的是,我可以为 wchar_t 变量分配一个 16 位值,并将其直接写入使用 utf-8 编码打开的文件中。当以 utf-8 编码时,该 16 位 Unicode 值可能会扩展到 24 位,但它的写入完全没有任何大惊小怪。我也不关心像 BOM 之类的特殊位。我在 Windows 和 Linux 中编写过类似的简单程序。相同的代码。工作一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多