Javascript 这个对象是什么格式的';s密钥存储在?%00*%00_数据

Javascript 这个对象是什么格式的';s密钥存储在?%00*%00_数据,javascript,text,unicode,utf-8,Javascript,Text,Unicode,Utf 8,我有一个具有以下键的对象: *_data 但是,字符是以非标准格式编码的,这给我的代码带来了一些问题 我将密钥的值保存到cookie,并发现以下内容: %00*%00_data 但是,当比较此字符串(使用==而不是==)与键的值时,它们并不相等 目前,我正在将键的值存储到一个变量中,并使用该变量作为键。然而,我非常好奇的是,我可以将实际的键与哪个字符串进行比较,从而得到true 任何关于这个谜团的帮助都将不胜感激。%00是URI编码的字符NUL的UTF-8表示,表示空字符。我想这里用它来区分

我有一个具有以下键的对象:

*_data
但是,字符是以非标准格式编码的,这给我的代码带来了一些问题

我将密钥的值保存到cookie,并发现以下内容:

%00*%00_data
但是,当比较此字符串(使用
==
而不是
==
)与键的值时,它们并不相等

目前,我正在将键的值存储到一个变量中,并使用该变量作为键。然而,我非常好奇的是,我可以将实际的键与哪个字符串进行比较,从而得到true


任何关于这个谜团的帮助都将不胜感激。

%00
是URI编码的字符NUL的UTF-8表示,表示空字符。我想这里用它来区分实际的*字符和*字符,它们可能会被您正在使用的某个库所取代

我们可以使用从
%00*%00_数据
*_数据
,顾名思义,它解码URI编码字符:

decodeURIComponent("%00*%00_data");

根据您的评论,您正在比较的
变量实际上是长度为
8的字符串。我之所以提到这一点,是因为您的问题中包含的字符串
*\u data
的长度为
长度
6,因为它不包含两个空字符。

密钥似乎是使用encodeURIComponent存储的,所以请使用
decode UriComponent
对其进行解码,例如
console.log(decode UriComponent('%00*%00\u data'))
显示“*\u数据”。令人惊讶。我使用了
if(key==decodeURIComponent('%00*%00_data'))
并返回true!非常感谢。请标记为信用的答案。
==
也返回true。这两个值都是字符串,所以无论您使用
==
还是
=
都没有区别。不,从来没有那种感觉……eureka?;-)