You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决FormatException: Unexpected extension byte(偏移量37)错误?

解决FormatException: Unexpected extension byte (UTF-8解码错误)

这个错误本质是JSON文件的UTF-8编码不规范,或是文件包含无效字节,导致解析器无法正确解码。以下是具体排查和解决步骤:

1. 检查并修正JSON文件编码

  • 用VS Code、Notepad++等编辑器打开文件,查看当前编码:
    • VS Code:点击右下角编码标识,切换为UTF-8(建议选不带BOM的UTF-8)
    • Notepad++:菜单栏「编码」→ 选择「转为UTF-8编码」后重新保存
  • 避免使用GBK、ASCII等非UTF-8编码保存JSON文件。

2. 定位并修复无效字节

错误提示的offset 37是字节偏移位置(多数工具从0开始计数):

  • 用十六进制编辑器打开文件,找到对应偏移的字节,检查是否存在乱码、特殊控制字符等非UTF-8内容
  • 删除或替换无效字符,确保文件内容符合UTF-8编码规范。

3. 代码中明确指定编码解析

如果文件实际编码不是UTF-8(比如UTF-16),读取时直接指定对应编码:

Dart/Flutter示例

import 'dart:io';
import 'dart:convert';

void main() async {
  final file = File('target.json');
  // 根据文件实际编码调整,比如utf16、latin1等
  final content = await file.readAsString(encoding: utf16);
  final jsonData = jsonDecode(content);
  print(jsonData);
}

Python示例

import json

# 指定文件实际编码
with open('target.json', 'r', encoding='utf-16') as f:
    data = json.load(f)
print(data)

4. 验证JSON语法有效性

  • 用编辑器的JSON校验插件检查文件是否存在语法错误(比如引号不闭合、逗号误用等),这类问题也可能触发编码相关的异常
  • 如果文件是网络下载的,重新下载一次,排除传输过程中文件损坏的可能。

内容的提问来源于stack exchange,提问作者Shubham Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 19:15:27