簡體   English   中英

Javascript LZ 字符串壓縮 檢查字符串是否已經壓縮

[英]Javascript LZ String compression check if string is already compressed

我正在使用 LZ 字符串庫https://github.com/pieroxy/lz-string/來壓縮/解壓縮字符串並將它們保存在 localStorage 中。

由於壓縮將應用於現有項目,客戶的未壓縮字符串已保存在 localStorage 上。 有沒有辦法知道保存的字符串是否已經被壓縮?

有時,當您嘗試解壓縮未壓縮的字符串時,您會得到Null或空字符串,但某些字符仍然“錯誤地”解壓縮。 例如:

LZString.decompressFromUTF16("O"); //returns null
LZString.decompressFromUTF16("J"); //returns string 0x80

此外,如果我嘗試解壓縮Jam這個詞,我不會得到 Null 或空結果只是一個字符串;

LZString.decompressFromUTF16("Jam"); //returns string 0x80

這是一個帶有示例https://jsfiddle.net/imurphy/8c94mhxw/ 的 JsFiddle

有任何想法嗎? 謝謝

我認為更好的結構化替代方法是將壓縮字符串保存為一種格式,以便您可以輕松檢測它是否被壓縮。 例如,而不是這樣做:

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---開頭,並根據需要提取壓縮字符串部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM