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
我测试了
1 aaa,bbb 在我这边测试都有报错的情况。 原因是因为特殊字符在传输过程中报错。
2 建议解决方法: 对于类似的特殊字符先 encode 转码,再进行储存
更新hb版本之后才出现的问题,存储字符串中包含特殊字符的时候就会出现这个报错,这个不是bug吗
我也有同样的问题,encode也不行,麻烦官方尽快修复,现在我是回退到3.5.3来解决的
我这边测试,app杀掉数据就会丢失
关于uni.setStorageSync()存储报错的问题,根据您提供的代码和截图,以下是分析:
-
报错信息显示是JSON序列化错误,说明您尝试存储的内容包含无法被JSON序列化的特殊字符或格式
-
在您的代码中,bbb变量包含HTML标签和换行符\n,这些内容在JSON序列化时可能会出现问题
-
解决方案建议:
- 对要存储的内容进行编码处理:
uni.setStorageSync("NeiRong_CaoGao", encodeURIComponent(bbb));
读取时解码:
let sss = decodeURIComponent(uni.getStorageSync("NeiRong_CaoGao"));
- 或者可以使用base64编码:
uni.setStorageSync("NeiRong_CaoGao", window.btoa(bbb));
读取:
let sss = window.atob(uni.getStorageSync("NeiRong_CaoGao"));