专栏首页MySQL从删库到跑路json解析BOM问题,can't decode byte in position 0

json解析BOM问题,can't decode byte in position 0

Json(javascript object notation)是基于javascript(standard ECMA-262 3rd Edition-December 1999)的一个子集,采用完全独立于语言的文本格式。这种格式的数据在系统间传递体积小,解析也很方便,各种语言都自带解析json格式数据的方法。

但是如果你在windows环境编写了一个json格式的文件,然后用Python或者golang读取这个文件。将读取到的字符串进行json解析,往往会报错can't decode byte in position 0: invalid continuation byte。windows下选择utf-8编码时,会使用带BOM的utf-8形式,会在文件的头部默认加上“\xef\xbb\xbf”。通过文件读取到的字符串就是'\xef\xbb\xbf{A:'ddd'; B:'kkk'}',这种肯定不符合json格式的定义了,只有去掉\xef\xbb\xbf后才是标准的json格式。

解决方案可以是以utf-8不带BOM格式保存文件。如果程序本身是Linux环境运行的,那么可以直接在Linux环境编辑json格式文件就不会有BOM问题了。在windows环境编辑过json格式文件,例如配置文件config.json,如果解析报错,首先应该考虑的就是BOM问题。

本文分享自微信公众号 - MySQL从删库到跑路(gh_574fe5c6adf5),作者:小当家

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL Decimal is not JSON serializable以及插入小数变成0

    使用Python搭建的web服务,后台读取MySQL数据后,需要将数据序列化为json串,返回给前端。但是如果MySQL的字段是decimal类型,序列化为js...

    震八方紫面昆仑侠
  • 网站ipv6改造基本思路

    进入ipv6时代后,网站都面临一个由ipv4到ipv6改造的问题。起码的要求是,如果用户使用ipv6设备访问网站,体验应该和使用ipv4设备是一样的。目前很多网...

    震八方紫面昆仑侠
  • 网络时间协议介绍以及服务器同步网络时间

    网络时间协议(英语:Network Time Protocol,缩写:NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的一个网络协议,位...

    震八方紫面昆仑侠
  • Java如何调用Linux命令

    我是攻城师
  • 03 Types of Learning

    从Output Space/Data Label/Protocol/Input Space四个维度介绍常见机器学习类型,见详细课件。

    用户2183996
  • 二叉树操作详解

    来源:https://segmentfault.com/a/1190000008850005

    C语言与CPP编程
  • QQ黄脸 | 社会人迷惑行为大赏 [内含福利]

    都听说了吗? QQ黄脸小表情上!新!啦! ? 据说,当代社会年轻人扑朔迷离的 社会生存技能 和 内心真实os 都在这波QQ黄脸表情里了 除了这9小只 还有同...

    腾讯ISUX
  • DESeq2差异基因分析和批次效应移除

    生信宝典
  • 调整Win7时间同步频率的两种方法

      HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\

    杨强生
  • [CodeIgniter4]-代码模块

    CodeIgniter支持代码模块化组合,以便于你构建可重用的代码。模块通常来说是以一个特定主题为中心而构建的,并可被认为是在大型的程序中的一系列微型程序。 我...

    landv

扫码关注云+社区

领取腾讯云代金券