由于glib.string.escape()的文档
通过在字符串源中插入特殊字符'\ b','\ f','\ n','\ r','\ t','\ v','\'和'“'在他们之前是'\'。
[另外,所有范围在0x01-0x1F(在SPACE以下的字符)和0x7F-0xFF(在所有非ASCII字符中)的字符都用'\'替换,后跟它们的八进制表示。例外中提供的字符不会转义。
现在我要不是 eacape“ 0x7F-0xFF”字符。如何编写exceptions部分?
我的示例代码无效。
shellcmd = "bash -c \""+file.get_string(title,"List").escape("0x7F-0xFF")+"\"";
print("shellcmd: %s\n", shellcmd);
Process.spawn_command_line_sync (shellcmd,
out ls_stdout, out ls_stderr, out ls_status);
if(ls_status!=0){ list = ls_stderr.split("\n"); }
else{ list = ls_stdout.split("\n"); }
您实际上必须在0x7f
参数中放置字符0xff
至exceptions
。所以像:
shellcmd = "bash -c \""+file.get_string(title,"List").escape("\x7F\x80\x81\x82…\xfe\xff")+"\"";
您需要手动列出它们。
更笼统地看代码,您似乎正在构建要运行的命令。这是一个非常糟糕的主意,您永远不要这样做。它对code injection敞开。使用Process.spawn_sync()
并传递给它一个参数向量。