linux中的readdir()有时候不会返回正确的字符串utf8

时间:2015-05-28 10:23:12

标签: linux utf-8 readdir

我在名称为

的文件夹中有一个文件

01一千个伤心的理由 张学友

但有时readdir()只返回所有?????????作为文件的名称。

我在google上搜索了这个,发现readdir在某些系统上有一些utf-8问题(比如this one)。我读得对吗?如果在linux上,这就是问题,那么有什么解决方案吗?

修改 问题是实际上有两个脚本(一个是我的,还有另一个),它们将相同的设备安装在两个不同的路径上。我挂载为utf-8,但另一个未挂载为utf-8(它可能处于默认模式)。因此,如果我的脚本首先在重启或设备插入时运行,一切都很好。否则问题就来了。

所以问题是为什么这两个坐骑正在影响另一个,我该如何纠正呢?

1 个答案:

答案 0 :(得分:1)

在Linux(或更一般地说,POSIX)上,路径名只是一串由' \ 0'终止的任意字节。 (ASCII NULL)字符,路径名组件由' /'分隔。允许每隔一个字节值。如何解释这些字节取决于应用程序。因此,很可能您的问题与不同的区域设置等有关。 "脚本1"创建一个包含无效UTF-8的路径名,但恰好是在"脚本1"的任何语言环境中都是正确的可打印字符。正在运行。