相关疑难解决方法(0)

消除R中的字符串

这与之前的问题有关,此处:将\ u转义的Unicode字符串转换为ASCII

我提出了一个涉及的解决方案eval(parse(text=x)),对于非R用户来说,意味着它所说的:解析文本字符串,然后对其进行评估.目的不是允许执行任意代码,而只是为了解除转义的Unicode文本.因此解决方案:

eval(parse(text=paste0("'", x, "'")))
Run Code Online (Sandbox Code Playgroud)

虽然考虑到有限的目标,这应该是相当安全的,但我有兴趣知道:保持安全需要多少卫生处理?

至少,我想任何嵌入的单引号和双引号都必须被转义.例如,假设我们有

x <- "this is a '; print(dir()); 'string"
Run Code Online (Sandbox Code Playgroud)

然后eval根据上面的代码段执行此操作将执行中间的代码.所以我们必须逃避报价:

eval(parse(text=paste0("'",
                       gsub("'", "\\\\'", x),
                       "'")))
Run Code Online (Sandbox Code Playgroud)

同样适用于双引号.我不认为未转义的 Unicode等价物\u0022并且\u0027是一个问题,因为对于解析器,它们将与plain "'.

我错过了这种方法有什么漏洞吗?

security sanitization r

6
推荐指数
1
解决办法
449
查看次数

以编程方式指定unicode字符R

在R中,可以先使用\u,然后再指定一个代码,以指定unicode字符。

"\u00c3"
[1] "Ã"
Run Code Online (Sandbox Code Playgroud)

如果我已经将“ 00c3”部分作为字符串怎么办,如何获得unicode?


"\u00c3"
[1] "Ã"
Run Code Online (Sandbox Code Playgroud)

我知道这个函数rawToChar(),但是这个字符的原始版本是c3 82。我怎样才能从00c3得到它?

r utf-8

3
推荐指数
1
解决办法
877
查看次数

标签 统计

r ×2

sanitization ×1

security ×1

utf-8 ×1