android:字符串转码的使用

去年开发了一个便签的app。然后一直在不定期迭代。

  • 大体来说,就是将用户输入存到db中,后续可以解析db,将数据二次展示

    • 当时是在存db之前,先将数据转成json格式了。

    至于为何要将数据转成json格式,一时不好解释,需要一些上下文,这里不做解释。

  • 然而问题出现了,之前一直没有发现的一个问题。就是如果用户输入的数据中包含双引号""这样的东西,就会导致解析失败。程序直接崩溃了。原因很简单,比如下面这条数据:

  • {"xxx":"5oiR5piv5YaF5a655ZCX77yf5piv55qE5ZGA77yM5bm25LiU5oiR6KKr5pu05paw5LqG5"ZOm "}

    就是因为中间多了一个"导致json格式被破坏,后续进行json解析就会崩溃的。

    • 解决方案就是:
      • 存储的时候将数据进行base64/urlEncoder转码
      • 解析的时候再次进行转码
    • 这样就解决了这种json格式被破坏的问题了。

    • 当然,这样解决还是会引发一个新的问题,就是向后兼容的问题:之前的数据并没有进行转码,而新的数据进行了转码。在读取的时候,需要区分新数据和之前的数据。否则会导致之前的数据在打开展示的时候,显示为乱码(base64#encode之后的一长串字母)。

      • 这个问题的解决方案就是:
      • 在解析的时候判断当前这条数据的存储时间,如果存储时间为软件升级之前的。就不进行转码,否则进行转码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值