uni-app uni.setStorageSync() 问题,没人解决吗

uni-app uni.setStorageSync() 问题,没人解决吗

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.6.4

手机系统:Android

手机系统版本号:Android 12

手机厂商:华为

手机机型:荣耀

页面类型:vue

vue版本:vue2

打包方式:云端

示例代码:

A页面,

methods: {  
    dakai(){  
        let aaa = `<p>商业服务基本上是公司在做了,业务也是公司在</p>\n`;  
        let bbb = `<p>商业服务基本上是公司在做了,业务也是公司在接</p>\n`;  
        let ccc = `<div class="Zhong-NeiRong-Body"><p>博客这个产物在前好多年比较流行,有个独立博客那就是别人眼里的大神啊,但近几年,随着移动端的突飞猛进,各种针对移动端的平台越来越多,新浪博客,网易博客,搜狐博客,百度博客等等,都快销声匿迹了,有的甚至已经关闭了,更别说独立博客。</p>  
<p>自己也是最近才有重开博客的想法,年龄大了,写写心得,记录记录,这个年龄写的东西比较随和,也不至于在过五六年看到自己写的文章都脸红,加上平时喜欢看书,写写心得也是不错的选择。</p>  
<h2>实际上还有个原因</h2>  
<p>最近一个月发现,被抖音,头条等占据了太多太多的时间,不由自主的浪费了好多。</p>  
<p>本来想着,打开抖音可以学习到点什么,最后发现,想在抖音等自媒体平台学习到东西,基本上别自欺欺人了。</p>  
<p>头条先不说,抖音这种平台,不以内容的对错衡量,而是以能不能抓住用户的点为衡量,这就很可怕了,就比如,现在抖音的那种地摊科学,什么今天曝光美国UFO啊,明天山海经记录了海底人啊等,实在是...</p>  
<p>关键的是,我平时刷抖音,看到那种露大腿的,装傻子的基本上都会长安,屏蔽,别给我推荐这些,本以为大数据不会再给我推送这些,实际上,没啥用,抖音的本质就是露大腿,装傻子。</p>  
<p>当我慢慢发现这点,自我反省了下,嗯,还不如把这些时间拿到看书上,写写博客上呢。</p>  
<p>为了用手机写博客方便,还专门开发了个app,对接到zblog,这样也比较方便,比如这篇文章。</p>  
<p>也准备把这个app打造成一个成熟的产品。</p>  
<div class="FaBuYuYiDongDuan">本信息发布于移动客户端</div>  
</div>\n`;  

uni.setStorageSync("NeiRong_CaoGao",bbb);  
uni.navigateTo({  
    url:"/pages/ceshi/ceshi"  
})  
}  
}

B页面,

onLoad() {  
    let sss = uni.getStorageSync("NeiRong_CaoGao");  
    console.log(sss)  
},

除了A页面的变量bbb报错,其他的都不报错(变量aaa和变量ccc)

操作步骤:

自己试一试

预期结果:

正常储存、读取

实际结果:

报错


更多关于uni-app uni.setStorageSync() 问题,没人解决吗的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

我试试

更多关于uni-app uni.setStorageSync() 问题,没人解决吗的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我测试了
1 aaa,bbb 在我这边测试都有报错的情况。 原因是因为特殊字符在传输过程中报错。 2 建议解决方法: 对于类似的特殊字符先 encode 转码,再进行储存

更新hb版本之后才出现的问题,存储字符串中包含特殊字符的时候就会出现这个报错,这个不是bug吗

我也有同样的问题,encode也不行,麻烦官方尽快修复,现在我是回退到3.5.3来解决的

我这边测试,app杀掉数据就会丢失

关于uni.setStorageSync()存储报错的问题,根据您提供的代码和截图,以下是分析:

  1. 报错信息显示是JSON序列化错误,说明您尝试存储的内容包含无法被JSON序列化的特殊字符或格式

  2. 在您的代码中,bbb变量包含HTML标签和换行符\n,这些内容在JSON序列化时可能会出现问题

  3. 解决方案建议:

  • 对要存储的内容进行编码处理:
uni.setStorageSync("NeiRong_CaoGao", encodeURIComponent(bbb));

读取时解码:

let sss = decodeURIComponent(uni.getStorageSync("NeiRong_CaoGao"));
  1. 或者可以使用base64编码:
uni.setStorageSync("NeiRong_CaoGao", window.btoa(bbb));

读取:

let sss = window.atob(uni.getStorageSync("NeiRong_CaoGao"));
回到顶部