gpt4 book ai didi

javascript - 在 Javascript 中以编程方式转换和存储 unicode 字符串

转载 作者:行者123 更新时间:2023-11-30 00:18:24 25 4
gpt4 key购买 nike

上下文

我想将 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');

这允许我使用以下代码以编程方式生成 keyval 的值:

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), and " (\u0022).

如果 任何 javascript 关键字或符号的 unicode 上的反斜杠被转义,eval 会抛出语法错误。

不幸的是,这不是可以简单解决的问题

eval(unescape(uEncode('var j = "hi"')));

有什么方法可以做到这一点吗?

最佳答案

eval(JSON.parse('"'+uEncode('var j = "hi"')+'"'))

关于javascript - 在 Javascript 中以编程方式转换和存储 unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com