在 Javascript 中解析 unicode 的行为差异

Difference in behavior parsing unicode in Javascript

提问人:Kiran 提问时间:8/27/2023 最后编辑:Kiran 更新时间:8/27/2023 访问量:19

问:

当我直接使用给出字符串的变量 () / regex 表达式运行 or 时,它会抛出错误或不解码,但是当我在控制台中使用相同的字符串运行这些函数时,它可以工作。我确定我错过了一些愚蠢的东西,但不知道是什么。JSON.parsedecodeURI_

这是来自 VS 代码上的调试器控制台:This is from the debugger console on VS code:

enter image description here

enter image description here

_通过使用 HTML 字符串中的正则表达式解析一些值来实现。 是来自外部系统的 HTML 字符串。像这样:data

const _ = /(?<=customer_data\['some_property'\] = ').*?(?=';)/.exec(data)?.[0] || '{}';

我什至不知道如何处理这个问题。

javascript unicode html 解析 decodeuricomponent

评论

1赞 Pointy 8/27/2023
JSON.parse()并且截然不同。decodeURI()
1赞 VLAZ 8/27/2023
没有传递相同的字符串。尝试记录和您最终传递的内容。字符串文本的内容 of ,这就是你在记录它时看到的内容。要查看输出,这意味着这是字符串的内容,并且构造此内容的文字是,如果您记录,您会看到 does not show .因此,在使用之前必须对其中的内容进行解码。你已经展示了你这样做,但你没有使用_"\x7b"{\x7b"\\x7b"{_JSON.parse
1赞 zouabi 8/27/2023
你能试试(或)吗?JSON.parse(decodeURIComponent(_.replaceAll('\\x', '%')))replace(/\\x/g, '%')
1赞 zouabi 8/27/2023
的输出是什么?decodeURIComponent(_.replace(/\\x/g, '%'))
1赞 Kiran 8/27/2023
@zouabi,如果您想将其添加为答案,我可以将其标记为已接受。非常感谢您的帮助

答:

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, '%'))
);