[使用glib.string.escape()时如何转义特殊字符

问题描述 投票:0回答:1

由于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"); }
gtk glib vala
1个回答
0
投票

您实际上必须在0x7f参数中放置字符0xffexceptions。所以像:

shellcmd = "bash -c \""+file.get_string(title,"List").escape("\x7F\x80\x81\x82…\xfe\xff")+"\"";

您需要手动列出它们。

更笼统地看代码,您似乎正在构建要运行的命令。这是一个非常糟糕的主意,您永远不要这样做。它对code injection敞开。使用Process.spawn_sync()并传递给它一个参数向量。

© www.soinside.com 2019 - 2024. All rights reserved.