在 Ubuntu(Linux)下,opendir 本身是支持中文路径的,前提是满足一些条件。下面详细说明。
opendir 与中文路径的关系opendir 的函数原型是:
DIR *opendir(const char *name);
char *(字节序列)✅ 所以只要传给 opendir 的字节序列在文件系统中是合法路径,就可以打开
✅ 中文路径在 Ubuntu 上通常是 UTF-8 编码
Ubuntu 默认使用:
ext4zh_CN.UTF-8 或 en_US.UTF-8只要你的程序:
opendir就可以正常访问中文目录。
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("测试目录");
if (!dir) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
只要:
就能正常工作 ✅
➡ 需要转换:
// 使用 iconv 或第三方库
有时需要:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
检查:
locale
即使 opendir 成功,printf 也可能乱码。
opendir 不一定支持 UTF-8_wopendiropendir + 系统编码转换Linux / Ubuntu 比 Windows 友好很多 ✅
✅ Ubuntu 下 opendir 支持中文路径
✅ 前提是:UTF-8 编码 + 正确 locale
❌ 不支持:编码不匹配、终端不支持
如果你愿意,我可以帮你: