提问人:Kiran 提问时间:8/27/2023 最后编辑:Kiran 更新时间:8/27/2023 访问量:19
在 Javascript 中解析 unicode 的行为差异
Difference in behavior parsing unicode in Javascript
问:
当我直接使用给出字符串的变量 () / regex 表达式运行 or 时,它会抛出错误或不解码,但是当我在控制台中使用相同的字符串运行这些函数时,它可以工作。我确定我错过了一些愚蠢的东西,但不知道是什么。JSON.parse
decodeURI
_
这是来自 VS 代码上的调试器控制台:This is from the debugger console on VS code:
_
通过使用 HTML 字符串中的正则表达式解析一些值来实现。 是来自外部系统的 HTML 字符串。像这样:data
const _ = /(?<=customer_data\['some_property'\] = ').*?(?=';)/.exec(data)?.[0] || '{}';
我什至不知道如何处理这个问题。
答:
1赞
zouabi
8/27/2023
#1
您尝试解析的字符串已被转义,即:。\\x7b\\x222\\x22:\\x22041169082\\x22\\x7d
将所有 s 替换为 a 并使用 decodeURIComponent
对其进行解码:\\x
%
const _ = '\\x7b\\x222\\x22:\\x22041169082\\x22\\x7d';
console.log(
decodeURIComponent(_.replace(/\\x/g, '%'))
);
评论
JSON.parse()
并且截然不同。decodeURI()
_
"\x7b"
{
\x7b
"\\x7b"
{
_
JSON.parse
JSON.parse(decodeURIComponent(_.replaceAll('\\x', '%')))
replace(/\\x/g, '%')
decodeURIComponent(_.replace(/\\x/g, '%'))