javascript - 领域字符串压缩
问题描述
我正在尝试在 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 varius eu a lectus。
这是压缩后的文本:
᐀⌠搞삜ᓀ똠▀ᰌ␄쨁떄疐ׄČ᎔聨䀘쨀臒泆䩳奴ඓ『戎㸲è䀀冁丛曤⮈Ǣ#ꘁ⇰偩雁\u0016熘ಔ⠸⯊鮮"鳡飸䋎⹊䖕还㋵낕ホ誁桬昲昲䠦蜈蛥蛥⁹⁹왉왉왉⨯⨯텀산偌偌➓쭭䠁ྴྴ㯤腲㵐㵐ܝܝꋔꋔ颀㆛≍쨥甲Ċႋ⨥• 着迷⢠⢠챺ؽ褚딦줂ợợኔ⚹嫈傹⩀س㎠�上顱释放에㎠ច쬜춉밠ឝΥ춌-似⣴ˊ̠̠뗢섛뗢섛뗢섛ꈲ錌咮发䜘ೆ셤㣨沾㣨沾趐\䦕囙䦕囙\ u000001䒊䒊䒊䒊䒊䒊䒊摚欳摚欳癐癐㴾㴾楉楉腝㴲錾倥䁑ᖱ舰棘묇袘ⁿ∃�ᐉ‷ୱ⨪骫句㠨갓ㄤ嬄超㠂얀2ꃀㄌ春蝫₋ᎇ磈\u001c雎䇰̭Ⴐ㠏䄔뉙 髉⠤馥䤒▍拘ꠓ븠㫌肺镰䥰㉻븠桧䛁౸℃쌼ȑ䎨髬✁묖ꒇ태越⌠亖ᗘ죲ᐌ⅁ぬꁘⴡ⅁⸈ ⻀憩蕺ʐꤠ꺔╞䂌뎑祯ࠍ偐딹ꢂ凡뢄枥卜灜༈ࠓ̀ᘲ㬜恄딤械䢈˫㉉䠤腤삝ᦛ毚銢⛒⑲䪒惤㈱⋴ヤ㈮㈮鎴좶菏箾箾ꒂᄲʆబ࡚㈀ब슸ꕃ✜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔜蹃䚂ʔ蒌蔔蹃䚂ʔ蒌蔔⌠ৄ賋⌠ৄ賓⌠ৄ賫쵤㖣쬏菜쵤㖣쬏芨㍱ꌸ胊㰐⌂頬ᆍ㭰�ڎ룮⋋Ĉ큺蛜Ԁꭕƴ횥⑦ꁢ㘖狜뛦䍰崹b쁰ేɨ亏ⱦ觎搕ꂹDZ鬁ꪄ䂇첅ḧ钎咭왛㬽ƌ宓좩쒋렓㕆锋ꁄ띅藰롪bピي瞮㻑⋄젂⚙緤蠌ᡚ梒铿礃鋹険뛛둘厛玔☂罙痛䨯悷䰾䇤庺⟎䌌ᡚ梒铿礃鋹険뛛둘厛玔☂罙痛䨯悷䰾ナ悷䰾ナ悷䰾䇩庠 - ᮀ爂쓙橱縿쐄쁗ⴇ ﳂ ﳂࣀࣀ乌脻岏쩁䠡恕⎠⎠おおꬪἴꬪἴꬪἴꬪἴꬪἴ鴭┶쬤쬤쬤玫≁鹄鹄鹄೩ྡྷྡྷ ࡘᝇ롶鼐ꌀ厾⍮ꄐ⪟Ꮻⷥꭆ갅ൂ둶蠕动ਢ䂊ဃ둸䇰၇�肊ข퐙气傄⑤麋仭앐ᙎ蒜ꄒКㄎ鏠ㄤ뤸㎑叹耷钇급ऩᘹ逜ঀ⫄ứ꒩ꆈₒࡀ찾ํ碧卞甜쒊蠼㝲⑅ᒓ豠ᰱ㶄偘⠈愘韫䉗ꄇ쪒쑩顷䲼凼㐜虿廊㧒
根据上面网站上的演示,压缩前的文本为 5430 字节,压缩后为 1480 字节,这两种情况下都明显低于 16MB。
不确定该网站是否暗示仅从它引用本地存储的方式支持默认的 JS 本地存储实现。除此之外,有没有人尝试在 Realm 中使用这个压缩工具并让它工作?或者看到这个错误?
解决方案
阅读 API 后,我意识到该compress(string)
方法返回一个“无效”的 UTF-16 字符串。使用compressToUTF16(string)/compressToBase64(string)
及其各自的解压缩方法不会给出错误(尽管前者对我不起作用,但这是一个单独的问题)。
推荐阅读
- reactjs - 使用 eact-native-reanimated 创建进度条但动画行为不正确
- powershell - Powershell 自动登录到网站.....$ie.Document.getElementsByClassName
- .htaccess - 如何将htaccess中的重写转换为nginx?
- css - html中的自定义文本
- javascript - Webpack serve 不包括对 var 的导出
- java - 如何使用 JopenDocument 向 TableModel 添加行
- c++ - 关于重新声明友元函数的警告
- r - R - 创建各种链接供 rvest 使用
- php - Laravel 中的 Firestore 连接问题
- flutter - 如何显示/隐藏基于 android sdk 构建版本的小部件?