最近在实现一个读取视频文件的需求,使用的语言是php。由于某些文件比较大,所以使用了splFileObject这个类。读取一些纯英文的路径没问题,含中文的路径转码为gb2312也没问题,但是在读取某些整体路径含有Unicode字符的文件名,就会报错并无法读取(Unknown Error)。路径类似于下面:
//文件绝对路径
$filename = "E:/test/视频/Video ?????.mkv";
//创建文件对象,报错
$fileObj = new splFileObject($filename, 'r');
刚开始以为是库的问题,后来接连使用了fopen、file_get_contents,都是一样无法读取。想使用exec()调用ffmpeg生成该视频的缩略图,也无法读取这个文件的路径。但是直接在命令行里输入,又可以执行。
目前已确定php的编码设置成了utf8,mbstring扩展正常运行。要怎么才能在splFileObject和exec中正常读取该路径呢?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…