Linux version 4.13.16-licheepi-zero+
struct dirent中d_name读到的中文被 ‘?’ 替换,无法转成UTF8 不能正常显示
离线
这取决于您的平台和文件系统。例如,HFS +文件系统使用UTF-16在内部存储文件名,并将其公开为UTF-8,因此我认为charDirent中的数组应包含UTF-8字符串(无论您的语言环境如何)。
NTFS也将文件名存储在UTF-16中,但是文件公开的形式取决于平台。Windows在系统区域设置和UTF-16之间转换。另一个平台可以在UTF-16和UTF-8之间转换。另一个平台可以在UTF-16和直接环境的语言环境之间转换。
其他文件系统只是将文件名存储和公开为字节数组,因此Dirent将包含最初存储的所有数据。这通常是语言环境编码中的字符串,但不能保证。
从上面看, 应该需要你自己解析这个 d_name, 转码成utf-8才行, iconv 了解一下。
离线