我在名称为
的文件夹中有一个文件 01一千个伤心的理由 张学友
但有时readdir()只返回所有?????????
作为文件的名称。
我在google上搜索了这个,发现readdir在某些系统上有一些utf-8问题(比如this one)。我读得对吗?如果在linux上,这就是问题,那么有什么解决方案吗?
修改
问题是实际上有两个脚本(一个是我的,还有另一个),它们将相同的设备安装在两个不同的路径上。我挂载为utf-8
,但另一个未挂载为utf-8
(它可能处于默认模式)。因此,如果我的脚本首先在重启或设备插入时运行,一切都很好。否则问题就来了。
所以问题是为什么这两个坐骑正在影响另一个,我该如何纠正呢?
答案 0 :(得分:1)
在Linux(或更一般地说,POSIX)上,路径名只是一串由' \ 0'终止的任意字节。 (ASCII NULL)字符,路径名组件由' /'分隔。允许每隔一个字节值。如何解释这些字节取决于应用程序。因此,很可能您的问题与不同的区域设置等有关。 "脚本1"创建一个包含无效UTF-8的路径名,但恰好是在"脚本1"的任何语言环境中都是正确的可打印字符。正在运行。