首页 > 解决方案 > 领域字符串压缩

问题描述

我正在尝试在 Realm 中存储长字符串(可能超过 16MB 的限制)。为了减小它们的大小,我尝试使用lz-string工具来实现这一点。但是,当我尝试将字符串存储到 Realm 中时,出现以下错误:

[Error: basic_string::resize]

这是压缩前的文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit。Praesent a ex quis lacus hendrerit sodales vitae nec leo。Vivamus imperdiet nisi eu quam condimentum, nec porttitor magna blandit。Mauris arcu leo,euismod sed tortor id,elementum congue nibh。Aliquam erat volutpat。Donec tempor magna eget ultricies 前庭。Morbi ac turpis aliquet nibh rutrum auctor vitae id quam。Maecenas vel nunc erat。neque faucibus iaculis 前庭 vulputate mauris。Vivamus luctus,nunc quis maximus pellentesque,nisl sapien consequat sapien,id vestibulum nulla quam sat amet metus。Aliquam vel varius erat.Class aptent taciti socialsqu ad litora torquent per conubia nostra, per inceptos himenaeos。Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus。Etiam 发酵坐在 amet lectus quis pharetra。Duis tempor pretium mi quis dapibus。Donec lobortis justo ex。Maecenas dapibus odio non urna maximus pretium。Vivamus et convallis odio。

sed sed molestie lectus。Nam et diam et lectus sagittis sagittis ornare et sem。Quisque consequat nunc eu libero hendrerit pharetra。Aliquam ac tempus massa。Donec sed dolor tristique, consectetur nunc nec, fringilla orci。Proin lobortis ipsum vel lorem aliquet posuere。Praesent dapibus metus iaculis, aliquet tortor eget, blandit sem。Vivamus eleifend consectetur ullamcorper。Suspendisse elementum diam libero,eu 前庭弧矢状面 nec。Etiam at pellentesque augue, vel iaculis dolor。Cras quis dictum urna。Ut ultricies aliquet arcu a porttitor。在 vel purus eget ex mattis porttitor ut congue massa。Duis sagittis nisl elit, id mattis magna pulvinar a.

整数 ac rhoncus purus。Ut vitae orci eros。Curabitur ullamcorper massa id risus efficitur, et laoreet ex consequat。Nunc nec suscipit est. Phasellus ac est ex。Etiam odio erat,发酵中的 ultrices,pretium non justo。Phasellus posuere nisl eu odio placerat, quis luctus arcu auctor。Nunc eu ligula sem。Nam non pharetra nisl。Suspendisse congue augue hendrerit, sagittis ex quis, mattis est. Aenean sed nibh vel sem tincidunt gravida vel vitae mauris。Morbi a dui sed lorem tristique accumsan ac at neque。Donec nec enim nulla。

Nullam vitae aliquam leo, eu auctor diam。Suspendisse a venenatis orci。Proin ut tellus eleifend,finibus erat non,egestas tortor。Phasellus sed augue pulvinar、porta arcu sed、luctus felis。Suspendisse at gravida felis,eu tempus lectus。Phasellus imperdiet enim eget vulputate facilisis。Nunc magna Tellus、condimentum non elementum eu、faucibus et mi。Morbi nec nisl et purus sollicitudin mollis。Nam eget arcu vitae nisl tincidunt tristique id sed est. Nulla lobortis diam hendrerit nunc pretium v​​arius eu a lectus。

这是压缩后的文本:

᐀⌠搞삜ᓀ똠▀ᰌ␄쨁떄疐ׄČ᎔聨䀘쨀臒泆䩳奴ඓ『戎㸲è䀀冁丛曤⮈Ǣ#ꘁ⇰偩雁\u0016熘ಔ⠸⯊鮮"鳡飸䋎⹊䖕还㋵낕ホ誁桬昲昲䠦蜈蛥蛥⁹⁹왉왉왉⨯⨯텀산偌偌➓೅쭭䠁ྴྴ㯤腲㵐㵐ܝܝꋔꋔ颀㆛≍쨥甲Ċႋ⨥᜻• 着迷⢠⢠챺ؽ褚딦줂ợợ᫜ኔ⚹嫈傹⩀س㎠�上顱释放에㎠ច쬜춉밠ឝΥ춌-似⣴ˊ̠̠뗢섛뗢섛뗢섛ꈲ錌咮发䜘ೆ셤㣨沾㣨沾趐\䦕囙䦕囙\ u000001䒊䒊䒊䒊䒊䒊䒊摚欳摚欳癐癐㴾㴾楉楉腝㴲錾倥䁑ᖱ舰棘묇袘ⁿ∃�ᐉ‷ୱ⨪骫句㠨갓ㄤ嬄᪞超㠂얀2ꃀㄌ春蝫₋ᎇ磈\u001c雎䇰̭Ⴐ㄰㠏䄔뉙 髉␧⠤馥䤒▍拘ꠓ븠㫌肺镰䥰㉻븠桧䛁౸℃쌼ȑ䎨髬✁묖ꒇ⃃태越⌠亖ᗘ죲ᐌ⅁ぬꁘⴡ⅁⸈ ⻀憩蕺ʐꤠ꺔╞䂌뎑祯ࠍ偐딹ꢂ凡뢄枥卜灜༈ࠓ̀ᘲ㬜恄딤械䢈˫㉉䠤腤삝ᦛ毚銢⛒⑲䪒惤㈱⋴ヤ㈮㈮鎴좶菏箾箾ꒂᄲʆబ࡚㈀ब슸ꕃ✜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔔⌠ৄ﬽賋⌠ৄ﬽賓⌠ৄ﬽賫힨쵤㖣쬏菜쵤㖣쬏芨㍱ꌸ胊㰐⌂頬ᆍ㭰�ڎ룮⋋Ĉ큺蛜Ԁ࡮ꭕƴ횥⑦ꁢ㘖਻狜뛦䍰崹b쁰ేɨ亏ⱦ觎搕ꂹDZ鬁ꪄ䂇첅ḧ钎咭왛㬽ƌ宓࡝꟡좩쒋렓㕆锋ꁄ띅藰롪bピي瞮㻑⋄젂⚙緤蠌ᡚ梒铿礃鋹険뛛둘厛玔☂罙痛䨯჊悷䰾䇤庺⟎䌌ᡚ梒铿礃鋹険뛛둘厛玔☂罙痛䨯჊悷䰾ナ悷䰾ナ悷䰾䇩庠 - ᮀ爂쓙橱縿쐄쁗ⴇ ﳂ ﳂࣀࣀ乌脻岏쩁䠡恕⎠⎠おおꬪἴꬪἴꬪἴꬪἴꬪἴ鴭┶쬤쬤쬤玫≁鹄鹄鹄೩޵ྡྷྡྷ ࡘᝇ롶鼐ꌀ厾⍮ꄐ⪟Ꮻⷥꭆ갅ൂ둶蠕动ਢ䂊ဃ둸䇰၇�肊ข퐙气傄⑤麋仭앐ᙎ蒜ꄒКㄎ鏠ㄤ뤸㎑叹耷钇급ऩᘹ逜ঀ⫄ứ꒩ꆈₒࡀ찾ํ碧卞甜쒊蠼㝲⑅ᒓ豠ᰱ㶄偘⠈愘韫䉗ꄇ쪒쑩顷䲼凼㐜虿廊㧒

根据上面网站上的演示,压缩前的文本为 5430 字节,压缩后为 1480 字节,这两种情况下都明显低于 16MB。

不确定该网站是否暗示仅从它引用本地存储的方式支持默认的 JS 本地存储实现。除此之外,有没有人尝试在 Realm 中使用这个压缩工具并让它工作?或者看到这个错误?

标签: javascriptstringrealm

解决方案


阅读 API 后,我意识到该compress(string)方法返回一个“无效”的 UTF-16 字符串。使用compressToUTF16(string)/compressToBase64(string)及其各自的解压缩方法不会给出错误(尽管前者对我不起作用,但这是一个单独的问题)。


推荐阅读