Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript LZ字符串压缩检查字符串是否已压缩_Javascript_String_Compression_Lzw - Fatal编程技术网

Javascript LZ字符串压缩检查字符串是否已压缩

Javascript LZ字符串压缩检查字符串是否已压缩,javascript,string,compression,lzw,Javascript,String,Compression,Lzw,我正在使用LZ字符串库压缩/解压缩字符串,并将它们保存在localStorage中 因为压缩将应用于现有项目,客户的未压缩字符串已保存在localStorage上。有没有办法知道保存的字符串是否已压缩 有时,当您尝试解压缩未压缩的字符串时,会得到Null或空字符串,但某些字符仍然被“错误”解压缩。例如: LZString.decompressFromUTF16("O"); //returns null LZString.decompressFromUTF16("J&

我正在使用LZ字符串库压缩/解压缩字符串,并将它们保存在localStorage中

因为压缩将应用于现有项目,客户的未压缩字符串已保存在localStorage上。有没有办法知道保存的字符串是否已压缩

有时,当您尝试解压缩未压缩的字符串时,会得到
Null
或空字符串,但某些字符仍然被“错误”解压缩。例如:

LZString.decompressFromUTF16("O"); //returns null
LZString.decompressFromUTF16("J"); //returns string 0x80
此外,如果我试图解压缩单词
Jam
我不会得到空的结果,而只是一个字符串

LZString.decompressFromUTF16("Jam"); //returns string 0x80
下面是一个带有示例的JSFIDLE


有什么想法吗?谢谢

我认为一个更好的结构化替代方案是将压缩字符串保存为这样一种格式,您可以轻松检测它是否被压缩。例如,与其做:

localStorage.property = someCompressedString;
做点像

localStorage.property = JSON.stringify({ compressed: true, payload: someCompressedString });
// or, if there isn't a chance of collisions with the following approach:
localStorage.property = 'compressed-true---' + someCompressedString;

然后检查该值是否为JSON可解析值或以
compressed true---
开头,并根据需要提取压缩字符串部分。

太好了!,但是我想知道是否有某种内置的替代方法,比如
LZString.isCompressed(string)
或者其他方法来创建一个函数来检测压缩字符串。