在 Ubuntu(Linux) 下,opendir() 是支持中文目录名的,前提是满足以下几个条件:
大多数现代 Linux 文件系统(ext4、xfs、btrfs 等)都支持 Unicode 文件名,中文目录名完全没问题。
例如:
DIR *dir = opendir("测试目录");
zh_CN.UTF-8 或 C.UTF-8)查看当前 locale:
locale
如果不是 UTF-8,可设置:
export LANG=zh_CN.UTF-8
# 或
export LANG=C.UTF-8
char *(不是 wchar_t)Linux 下 opendir() 接受的是 UTF-8 编码的 char *,不是 Windows 的 wchar_t。
✅ 正确示例:
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("中文目录");
if (!dir) {
perror("opendir");
return 1;
}
closedir(dir);
return 0;
}
如果中文目录名在终端显示乱码,通常是:
| 系统 | 函数 | 编码 |
|---|---|---|
| Linux | opendir() |
UTF-8 (char *) |
| Windows | _wopendir() |
UTF-16 (wchar_t *) |
Ubuntu 的 opendir() 完全支持中文目录名,只要:
如果你遇到具体报错(比如 No such file or directory),可以把代码和目录名贴出来,我可以帮你具体分析。