2015-05-28 61 views
2

我有名称的文件夹中的文件作为READDIR()在Linux中有时不返回正确的字符串UTF8

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

但有时READDIR()仅仅是返回所有?????????作为文件名。

我搜索了这对谷歌和发现,READDIR对某些系统(如this one)一些UTF-8的问题。我读的是否正确?如果在Linux上,这是问题,那么有没有解决方案?

EDIT 的问题是,实际上有两个脚本(一个是我的,还有另一种也),其安装在同一设备上的两个不同的路径。我安装为utf-8,但另一个不安装它作为utf-8(其可能是在默认模式)。所以如果我的脚本在重启或设备插入时首先运行,一切都很好。否则就会出现问题。

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

+1

你的意思是说,你在同一目录中多次上运行的readdir并获得相同的特定目录条目不同的结果?那很不寻常。为了记录,我无法用上面指定的名称创建文件,并且readdir在其上可靠地工作。 (顺便说一句,我认为这种联系[这是OSX专用]有关的人谁一直在寻找一个版本的readdir的,将自动转换UTF-8 wchars。我没有看到任何迹象表明有有问题的UTF-8本身。) –

回答

1

在Linux(或更一般地,POSIX),路径名只是一群由一个“\ 0”(ASCII NULL)字符结束任意的字节,由“/”分隔的路径名的组件。每个其他字节值都是允许的。如何解释这些字节取决于应用程序。所以很可能你的问题与不同的区域设置等有关。 “脚本1”创建包含无效的UTF-8,但恰好是正确的打印字符的任何区域设置“脚本1”在运行的路径。

相关问题