You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSYS2 MinGW64 UCRT编译器在Windows 7下UTF-8路径文件打开失败的解决方案问询

MSYS2 MinGW64 UCRT编译器在Windows 7下UTF-8路径文件打开失败的解决方案问询

我最近在尝试用MSYS2的MinGW64 UCRT编译器,在Windows 7系统上处理带UTF-8字符的文件路径。之前在不少地方看到说,UCRT(ucrtbase.dll)支持通过在应用中启用UTF-8区域设置来兼容UTF-8路径,于是我写了这段测试代码:

#include <stdio.h>
#include <locale.h>
int main() {
    setlocale(LC_ALL, "en_US.UTF-8"); // Set locale to UTF-8
    FILE *fp = fopen("test_utf8_文件.txt", "r");
    if (fp) {
        printf("File opened successfully\n");
        fclose(fp);
    } else {
        perror("Error opening file");
    }
    return 0;
}

我用MSYS2的UCRT64环境编译了这段代码,但在Windows 7上运行时,始终得到错误:Error opening file: Invalid argument。之后我还测试了另一个第三方预编译的MinGW UCRT版本,结果还是一样打不开带UTF-8字符的文件。

查微软的官方说明,上面提到:

To use this feature on an OS prior to Windows 10, you must use app-local deployment or link statically using version 1803 (10.0.17134.0) of the Windows SDK or later. For Windows 10 operating systems prior to 1803 (10.0.17134.0), only static linking is supported.

但问题来了——我在MinGW64的环境里,完全找不到静态链接UCRT的方法!想问问各位,有没有办法让这个UTF-8路径的功能在Windows 7的MinGW64 UCRT环境下正常工作?

另外补充一点:之前这个问题被标记为某个“fopen()在Windows下不支持非ASCII字符”问题的重复,但那个问题里也明确提到了旧系统可以通过应用本地部署或静态链接来实现UTF-8路径支持,只是没有说明MinGW环境下的具体操作方法,所以我觉得这不算是重复问题,希望能得到针对性的解答。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:13:05