【问题标题】:unicode as string execute by variablesunicode 作为字符串由变量执行
【发布时间】:2021-06-26 14:29:03
【问题描述】:
let testowy = v.za0+v._7a+v._1+v._1+v._13+v._3+v.za0+v._7a+v._1+v._1+v._13+v._12+v.za0+v._7a+v._1+v._1+v._13+v._11+v.za0+v._7a+v._1+v._1+v._14+v._5+v.za0+v._7a+v._1+v._1+v._14+v._10+v.za0+v._7a+v._1+v._1+v._5+v._15+v.za0+v._7a+v._1+v._1+v._5+v._16;

console.log(testowy) // output unicode "\u0061\u006c\u0065\u0072\u0074\u0028\u0029"
eval(testowy) // gives error
eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0029") // OK - alert()

问题是如何让 testowy 变量作为字符串工作?

eval("'"+"testowy+"'") // or
eval("\""+"testowy+"\"") // doesn't work 

【问题讨论】:

  • 哪种语言?你能提供更多细节吗?
  • 这能回答你的问题吗? "Variable" variables in Javascript?
  • 如果没有,您遇到了什么错误?我们不知道v 是什么。
  • 如果console.log 正在写入"\u0061\u006c\u0065\u0072\u0074\u0028\u0029",那么实际的字符串可能是使用转义斜杠设置的 - \\u0061\\u006c\\u0065\\u0072\\u0074\\u0028\\u0029。您需要将字符串解析为 unicode 字符。

标签: javascript string variables unicode eval


【解决方案1】:

如果 console.log 正在写入 "\u0061\u006c\u0065\u0072\u0074\u0028\u0029" 那么实际的字符串可能是使用转义斜杠设置的 -

\\u0061\\u006c\\u0065\\u0072\\u0074\\u0028\\u0029.

您需要将十六进制字符代码字符串转换为 Unicode 字符...

let testowy = v.za0+v._7a+v._1+v._1+v._13+v._3+v.za0+v._7a+v._1+v._1+v._13+v._12+v.za0+v._7a+v._1+v._1+v._13+v._11+v.za0+v._7a+v._1+v._1+v._14+v._5+v.za0+v._7a+v._1+v._1+v._14+v._10+v.za0+v._7a+v._1+v._1+v._5+v._15+v.za0+v._7a+v._1+v._1+v._5+v._16;

console.log(testowy); // outputs \\u0061\\u006c\\u0065\\u0072\\u0074\\u0028\\u0029

testowy = testowy.split('\\u')
    .map(s => {
        // ignore leading empty string.
        if (s !== '')
            return String.fromCharCode(parseInt(s, 16));
    })
    .join('');

console.log(testowy); // outputs alert()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2023-04-06
    相关资源
    最近更新 更多