我想将javascript中的字符串转换为unicode表示形式,这样我就可以用它做一些时髦的事情。
我的意思的一些例子:
我可以写
eval('\u0076\u0061\u0072 \u006a \u003d \u0022\u0068\u0069\u0022');
// This is `var j = "hi"`.
// For clarity, I kept \u0020 as a space.
我可以也写
eval('\u0076\u0061\u0072 \\u006a \u003d \u0022\\u0068\\u0069\u0022');
// Here I've escaped the backslash
// on the variable name and string
这些是等效的,都会产生j == 'hi'
。
有什么好处,我可以做到以下几点:
var val = '\\u0068\\u0069';
var key = '\\u006a';
eval('\u0076\u0061\u0072 ' + key + ' \u003d \u0022' + val + '\u0022');
这允许我以编程方式生成key
和val
的值,使用以下内容:
function uEncode(str) {
var hex, i;
var result = "";
for (i=0; i < str.length; i++) {
hex = str.charCodeAt(i).toString(16);
result += "\\u" + ("000"+hex).slice(-4);
}
return result;
}
我喜欢做的是能够做到以下几点:
eval(uEncode('var j = "hi"'));
这不起作用,因为uEncode
将转义var
关键字(\u0076\u0061\u0072
)上的反斜杠以及以下字符:=
(\u003d
) ,(
\u0020
)和"
(\u0022
)。
如果任何 javascript关键字或符号的unicode上的反斜杠被转义,则eval会引发语法错误。
不幸的是,这不是一个可以通过简单的
解决的问题eval(unescape(uEncode('var j = "hi"')));
是否有任何方法来完成此任务?
答案 0 :(得分:1)
eval(JSON.parse('"'+uEncode('var j = "hi"')+'"'))