从'system'命令返回的字符串编码

时间:2013-06-19 19:45:05

标签: regex linux string matlab character-encoding

我试图在Linux机器上读取ffmpeg返回的一些元日期。我是使用system命令从Matlab完成的。我对regexp的调用无法找到我要找的东西(它在Windows上运行正常)。我正在解析的行看起来像这样:

  

持续时间:06:33:42.17,开始:0.000000,比特率:65 kb / s

我正在通过这样的调用来解析持续时间:

  

dur = regexp(w,'持续时间:[[0-9] +:] +。[0-9] +','匹配');

其中w包含从ffmpeg调用返回的字符串。结果是dur为空,表示regexp无法与查询匹配。如果我保存w并将其加载到Windows计算机上,我会看到这一点(我截断了该行但你可以得到这个想法):

  

[0m [0; 39m [0m [0; 39m [0m [0; 39m持续时间:[0m [0; 39m [0m [0; 39m [0m [0; 39m06:33:42.17 [0m [0; 39米[0米[0;39米[0米[0;39米

这使我怀疑一些编码问题。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

那些看起来像终端控制代码; ANSI颜色代码更具体。 (参见http://en.wikipedia.org/wiki/ANSI_escape_code#Colors)如果ffmpeg有这样的选项,你可能需要考虑传递一个标志或什么来压制它们。 (通常,如果stdout是一个交互式终端,程序将自动检测并自行计算出来)