JSON 转 CSV 后中文乱码怎么解决
JSON 转 CSV 后中文乱码,根因通常是编码不匹配:导出时按系统默认编码写入,Excel 却按 GBK 解析 UTF-8 字节。解决办法是先确认导出编码为 UTF-8,再让 Excel 正确识别它。
最省事的做法是给 CSV 加 UTF-8 BOM(字节顺序标记),Excel 看到它就会自动按 UTF-8 打开。若你用的是浏览器本地运行的工具,通常在导出选项中就能勾选。
为什么会出现乱码
CSV 本身是纯文本,不含编码声明。它的中文能否正确显示,取决于写入端和读取端是否用同一套编码。
写入端存成 UTF-8,读取端按 GBK 解,就会出现「锟斤拷」或一串问号。反过来也会乱。
还有一种情况是数据本身没问题,只是 Excel 双击打开时猜错了编码。用记事本或代码读取就正常,这属于显示问题,不是数据损坏。
JSON 转 CSV 中文乱码怎么解决
按下面顺序排查,多数情况在前两步就能解决。
- 确认导出编码为 UTF-8。在导出选项里找「编码」或「Encoding」,选 UTF-8。若只能选「UTF-8 with BOM」,优先选它。
- 加 BOM。若导出的是无 BOM 的 UTF-8,用文本编辑器另存为「UTF-8 带 BOM」,或让工具直接导出带 BOM 的版本。
- 改用导入方式打开。在 Excel 里走「数据 - 从文本/CSV」,手动把编码选成 UTF-8,而不是双击文件。
- 检查原始 JSON 的编码。JSON 规范要求 UTF-8,但有些接口返回 GBK 编码的字节流。先确认源数据编码,再决定转换方式。
- 确认字段值里没有残留转义。中文被写成
\u4e2d\u6587这类 Unicode 转义时,需要先解码再导出,否则会显示成字面量。
处理完编码后,如果 CSV 仍显示异常,把文件用十六进制查看器打开,看开头三个字节是不是 EF BB BF。是,就说明 BOM 已写入。
JSON 转 CSV 怎么操作
基本流程分三步:读取 JSON、拍平结构、写出 CSV。
JSON 允许嵌套对象和数组,CSV 只有二维表格。所以第一步是把嵌套层级展开成列名。比如 {"user":{"name":"张三"}} 会变成列名 user.name。
常见做法是:
- 把 JSON 数组中的每个对象视为一行。
- 遍历所有对象,收集出现过的全部键,作为表头。
- 缺失的键填空字符串,保持列对齐。
- 值里含逗号、引号或换行时,用双引号包裹并转义内部引号。
你可以在 /tools 里找到在浏览器本地运行的工具,数据不上传服务器。具体工具页见 JSON 转 CSV 工具。
JSON 和 CSV 的区别
理解差异能帮你判断转换会丢什么。
- 结构:JSON 支持嵌套对象和数组,CSV 只支持扁平的二维表。
- 类型:JSON 有字符串、数字、布尔、null 等类型,CSV 全是文本。
- 编码:JSON 规范要求 UTF-8,CSV 没有强制规定。
- 体积:JSON 因为带键名和括号,通常比等价 CSV 大。
- 用途:JSON 适合接口传输,CSV 适合表格查看和批量导入。
转换的代价是嵌套信息会被拍平。数组字段一般序列化成 JSON 字符串塞进单元格,或拆成多行。
JSON 转 CSV 大文件处理
文件超过几十兆时,一次性读入内存容易卡死浏览器标签页。
更稳的策略是流式处理:逐块读取,逐行写出。这样内存占用只和单行大小相关,不随文件增长。
另外注意几点:
- 先扫描一遍收集全部键,避免后面出现新键导致列错位。
- 大文件导出时关闭实时预览,减少渲染开销。
- 分批导出成多个 CSV,比一个超大文件更容易打开。
- 若浏览器内存仍吃紧,改用命令行工具处理。
浏览器本地运行的工具在处理大文件时受标签页内存限制,这是环境决定的,不是工具缺陷。文件过大时建议换成本地脚本。
接口调试 JSON 转 CSV
调试接口时,常需要把返回的 JSON 快速转成表格核对字段。
此时的重点是保留原始结构,别急着拍平。先把响应存成 .json 文件,确认编码和完整性,再转换。
几个实用习惯:
- 保存响应时明确用 UTF-8,避免中途被改写。
- 先看顶层是对象还是数组。单个对象要先包成数组再转。
- 关注分页字段,避免只转了一页数据。
- 字段名带点号或中括号时,注意列名冲突。
转换后对照接口文档核对列名,能快速发现字段缺失或命名变更。
手机 JSON 转 CSV 免安装
在手机上处理 JSON 时,装 App 往往比用网页更麻烦。
浏览器本地运行的工具在手机端同样可用,不需要安装任何应用,也不依赖网络上传数据。打开页面、粘贴或选择文件、导出即可。
手机端的限制主要在内存和文件选择器上。超大文件不建议在手机上处理。导出后可以用表格类应用打开,若出现乱码,同样优先检查编码。
常见问题
加了 BOM 还是乱码怎么办
先确认 BOM 真的写入了,用十六进制查看器看开头是不是 EF BB BF。若已写入仍乱码,说明问题不在 BOM,而在数据源编码。回到 JSON 源头确认它是不是 UTF-8。
用记事本打开正常,Excel 打开乱码
这说明数据是好的,是 Excel 猜错了编码。改用「数据 - 从文本/CSV」导入,手动指定 UTF-8,而不是双击文件。
中文变成 \u4e2d\u6587 这种形式
这是 Unicode 转义序列,不是乱码。需要在转换前先解码,把转义还原成真实字符,再写出 CSV。
数组字段转出来是一串 JSON
这是正常的。CSV 没有数组类型,只能把数组序列化成字符串放进单元格。若需要展开,得手动拆成多行。
转换后行数变多了
多半是数组字段被展开成了多行。检查转换设置里数组的处理方式,选择「序列化为字符串」还是「展开为多行」。
结尾
中文乱码基本都能靠统一编码解决,优先用 UTF-8 加 BOM。JSON 转 CSV 后中文乱码怎么解决的答案,说到底就是让写入端和读取端用同一套编码,并让 Excel 知道该用哪套。选工具时优先选在浏览器本地运行的,数据不出本机,调试和转换都更放心。