在 Debian(以及绝大多数 Linux 发行版)上,readdir 本身是支持中文的,但需要注意几个关键点:
readdir 是什么readdir 是 POSIX 标准函数(在 <dirent.h> 中),用于读取目录项:
struct dirent *readdir(DIR *dirp);
其中:
struct dirent {
ino_t d_ino;
off_t d_off;
unsigned short d_revent;
unsigned char d_type;
char d_name[256]; // 文件名
};
✅ 支持
d_name 是 字节字符串(byte string)readdir 只是“原样返回字节”,不关心语言示例(C):
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
while ((entry = readdir(dir))) {
printf("%s\n", entry->d_name);
}
closedir(dir);
}
如果目录里有 中文.txt,程序会正常输出。
locale
确保包含:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
d_namemount -o utf8
或 fstab:
defaults,utf8
| 项目 | 是否支持 |
|---|---|
Debian readdir |
✅ 支持 |
| 中文文件名 | ✅ 支持(UTF-8) |
| 需要特殊处理 | ❌ 不需要 |
| 常见问题 | 终端 / 编码 / 挂载方式 |
如果你是在 C / C++ / Python / shell 中遇到具体问题,可以把代码或报错贴出来,我可以帮你具体分析。