Skip to content

JSON 转 CSV 转换器

在浏览器中将 JSON 转换为 CSV。支持 RFC 4180、Excel-EU、TSV、Pipe 预设。可展平嵌套或字符串化。100% 隐私,无需上传。

无追踪 浏览器中运行 免费
预设
选项 · , · auto · LF · header · no BOM · flatten
分隔符
输出表头行
引号
行结尾
UTF-8 BOM
嵌套
0 字符 0
CSV 输出
0 行 · 0 列
已审核 RFC 4180 合规性、Excel-EU 区域处理、NDJSON 自动检测以及大整数精度保留 — Go Tools 工程团队 · 2026年5月8日

什么是 CSV?为什么要从 JSON 转换?

CSV(Comma-Separated Values,逗号分隔值)是计算领域历史最悠久、支持最广泛的表格数据格式 — 每一款电子表格应用、每一个数据库、每一个分析工具,以及大多数编程语言都将 CSV 视为一等公民。相比之下,JSON 是 API 响应、配置和结构化数据交换的通用格式。在两者之间转换是数据工程中最常见的杂活之一:你从 API 或 NoSQL 数据库收到 JSON,需要 CSV 来加载到 Excel 进行分析、通过 COPY 加载到 Postgres 表,或加载到 BigQuery / Snowflake 数据仓库。本工具就是为这条转换路径而生,并能处理大多数在线转换器搞砸的四种场景。

与典型的在线转换器相比,本工具有四个重要差异点:

**1. RFC 4180 状态机解析器。** CSV 看起来简单,但引号规则非常微妙:用双引号包裹的字段可以包含逗号、内嵌换行符以及转义的双引号(加倍为 "")。简单的按逗号分割解析器会在真实数据上崩溃 — 含逗号的地址、多行文本字段、含引号的引号值都会出错。本工具实现了遵循 RFC 4180(IETF 的 CSV 规范)的真正状态机解析器,在两个方向上都能正确处理带引号字段、内嵌分隔符、内嵌行结尾和转义引号。输出可在 Python 的 csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间往返。

**2. 展平单向 / 字符串化可逆。** 嵌套 JSON 与 CSV 的扁平表格形状根本不兼容,大多数转换器在遇到嵌套对象或数组时会静默破坏数据。本工具给你明确的选择:展平模式生成点分隔键(customer.address.city)和索引键(items.0.sku),实现最干净的电子表格布局 — 在 Excel 中可读,但对往返有损。字符串化模式将数组和对象作为 JSON 保留在单个单元格中 — 不够美观,但完全可往返:当反向转换搭配「推断类型」时,CSV → JSON → CSV 会产生完全相同的数据。根据目标选择:在 Excel 中分析(展平)或流水线往返(字符串化)。

**3. 大整数检测。** JavaScript 的 Number 类型使用 IEEE 754 双精度,会对超过 2^53 - 1(9007199254740991)的整数静默四舍五入。这会咬伤真实的 JSON:Twitter snowflake ID、Discord ID、MongoDB Long 字段以及 Kubernetes resourceVersion 都是超出安全范围的 64 位整数。大多数基于浏览器的 JSON 工具会在没有任何警告的情况下静默生成错误数字。本工具在解析过程中会检测大整数值,显示列出受影响字段的警告横幅,并在 CSV 输出中将原始数字保留为字符串,让 Excel 和 Google Sheets 不会将其截断为科学计数法。

**4. 100% 浏览器端隐私。** 你的 JSON 数据 — 通常包含用户 PII、内部数据库导出、嵌入在负载中的 API 密钥以及生产密钥 — 永远不会离开你的浏览器。不会向任何服务器发送数据、不会记录、也不会有捕获输入的分析。你可以在浏览器的「网络」标签中验证。这是在线工具中处理敏感数据的唯一安全方式。点击「交换」查看反向,或在你的目标是 YAML 时使用我们的配套 JSON 转 YAML 转换器。需要在转换前验证 JSON?请试试我们的 JSON 格式化工具

CSV 的优势是普适性和简洁性:每个工具都能读取它、解析器极小、文件格式在任何文本编辑器中都人类可读。它的弱点是缺乏类型信息(在你告诉解析器之前,所有内容都是字符串)、没有原生嵌套结构支持,以及区域特定的怪癖(Excel-EU 分号、Windows CRLF 与 Unix LF)。JSON 的优势恰恰相反:精确的类型、原生的嵌套,以及在任何地方都能一致解析的严格规范。正确的工具取决于消费方:人类阅读电子表格 → CSV,机器消费 API → JSON。本转换器在两个方向上都处理了这座桥梁。

// Input JSON
[
  { "id": 1, "name": "Alice", "role": "admin" },
  { "id": 2, "name": "Bob", "role": "editor" }
]

// Output CSV (RFC 4180 preset: comma + CRLF + no BOM)
id,name,role
1,Alice,admin
2,Bob,editor

// Same input with Stringify mode + nested data
[
  { "id": 1, "tags": ["a", "b"] }
]

// Becomes
id,tags
1,"[""a"",""b""]"

核心功能

符合 RFC 4180

遵循 IETF CSV 规范的严格状态机解析器:正确处理带引号字段、内嵌分隔符、内嵌 CR/LF 以及转义双引号(加倍)。输出可干净地往返于 Python csv、PostgreSQL COPY 和 AWS S3 SELECT。

Excel、TSV 和 Pipe 预设

面向四种最常见目标的一键预设:RFC 4180(逗号 + CRLF)、Excel(分号 + CRLF + UTF-8 BOM,适配 EU 区域)、TSV(制表符 + LF)以及 Pipe(| + LF)。无需手动调整五个独立选项即可在格式之间切换。

展平或字符串化嵌套数据

明确的嵌套处理:展平生成点分隔键(customer.address.city),实现干净的电子表格分析;字符串化将数组和对象作为 JSON 保留在单个单元格中,实现无损往返。根据你需要的是 Excel 中的分析还是流水线往返来选择。

大整数检测

解析过程中检测超过 2^53 的整数,并在 CSV 中以字符串形式保留 — Twitter ID、Discord snowflake、MongoDB Long 字段和 K8s resourceVersion 保持精确,不会被 JavaScript 的 IEEE 754 数字类型静默四舍五入。

NDJSON 自动检测

行分隔 JSON(.ndjson、.jsonl)会被自动检测 — 直接粘贴流式日志、API 事件导出或数据湖输出,无需手动包裹为数组。每一行都成为 CSV 中的一行。

支持「交换」的双向转换

一个「交换方向」按钮即可原地翻转转换:输入变为 CSV、输出变为 JSON、当前文本保留。在两个方向上往返你的数据,在投入流水线前验证无损转换。

示例

REST API 响应

[{"id":1,"name":"Alice Chen","email":"alice@example.com","role":"admin"},{"id":2,"name":"Bob Garcia","email":"bob@example.com","role":"editor"},{"id":3,"name":"Carol Singh","email":"carol@example.com","role":"viewer"},{"id":4,"name":"Dan Müller","email":"dan@example.com","role":"viewer"}]

常见的 API 输出。开启表头后,即可获得整洁的表格 CSV,可直接用于 Excel。

GitHub Issues API

[{"id":1001,"title":"Bug: login redirects to 404","state":"open","labels":["bug","priority:high"],"user":{"login":"alice"}},{"id":1002,"title":"Feature: dark mode toggle","state":"open","labels":["enhancement"],"user":{"login":"bob"}},{"id":1003,"title":"Docs: update README","state":"closed","labels":["docs","good-first-issue"],"user":{"login":"carol"}}]

来自 /repos/{owner}/{repo}/issues。开启展平和表头 — user.login 会被展平为独立列。

MongoDB mongoexport

[{"_id":{"$oid":"6634a1b2c3d4e5f600000001"},"email":"alice@example.com","metadata":{"signupDate":"2026-01-15T10:30:00Z","preferences":{"newsletter":true,"theme":"dark"}}},{"_id":{"$oid":"6634a1b2c3d4e5f600000002"},"email":"bob@example.com","metadata":{"signupDate":"2026-02-20T14:15:00Z","preferences":{"newsletter":false,"theme":"light"}}}]

Mongo 导出格式。如果计划进行 CSV→JSON 往返转换,请选择字符串化模式。

NDJSON 事件日志

{"event":"signup","user":"alice","ts":1715000000}
{"event":"login","user":"alice","ts":1715000060}
{"event":"checkout","user":"alice","ts":1715000300}

行分隔 JSON(.ndjson/.jsonl)会被自动检测 — 直接粘贴文件内容即可。

嵌套电商订单

[{"id":"ord-001","customer":{"name":"Alice Chen","email":"alice@example.com","address":{"city":"Seattle","country":"US"}},"items":[{"sku":"SKU-100","qty":2},{"sku":"SKU-205","qty":1}]},{"id":"ord-002","customer":{"name":"Bob Garcia","email":"bob@example.com","address":{"city":"Madrid","country":"ES"}},"items":[{"sku":"SKU-100","qty":1}]}]

展平模式输出点分隔键(customer.address.city、items.0.sku)。切换为字符串化可将数组/对象保留为单元格内的 JSON。

Postman 测试结果

[{"name":"GET /users returns 200","status":"pass","duration":142},{"name":"POST /users creates record","status":"pass","duration":287},{"name":"GET /users/999 returns 404","status":"fail","duration":98,"error":"Expected 404, got 500"},{"name":"DELETE /users/1 returns 204","status":"pass","duration":156}]

Postman/Newman 测试导出。形状不一致的行(部分含 error)会用空单元格补齐 — 此时会出现 Schema notes 警告。

使用方法

  1. 1

    粘贴 JSON

    在上方输入框中输入或粘贴 JSON。工具接受对象数组、单个对象和 NDJSON(行分隔 JSON)— 自动检测。也可以点击「加载示例」试用 REST API 响应、MongoDB 导出或 NDJSON 事件日志等示例。

  2. 2

    选择预设(或调整选项)

    点击 RFC 4180(默认)、Excel(EU 分号 + BOM)、TSV(制表符)或 Pipe,一键切换到目标格式。打开选项面板可精细控制:分隔符、表头、引号(自动/始终)、行结尾(LF/CRLF)、BOM 以及嵌套(展平/字符串化)。

  3. 3

    复制或下载 CSV

    点击「复制」将 CSV 复制到剪贴板,或点击「下载」将其保存为 .csv 文件(TSV 预设时为 .tsv),可直接用于 Excel、Google Sheets、PostgreSQL COPY 或任何数据流水线。如需往返,点击「交换方向」原地将 CSV 转回 JSON。

常见转换问题

顶层值是基本类型

CSV 本质上是表格 — 由字段构成的行。单个数字、字符串或布尔值没有可投影的行/列结构。顶层 JSON 值必须是对象(单行表格)或数组(多行表格)。请先将基本类型包裹在对象或数组中。

✗ 错误
42
✓ 正确
[{"value": 42}]

形状不一致的数组(行的键不同)

当 JSON 数组中的行具有不同的键时(部分有 error 字段,部分没有),工具会跨所有行取所有键的并集,并用空值填充缺失的单元格。会出现 Schema notes 警告告知你列已被合并。这通常没问题,但如果下游工具要求严格的 schema,请验证输出。

✗ 错误
[
  {"name": "GET /users", "status": "pass"},
  {"name": "GET /users/999", "status": "fail", "error": "500"}
]
✓ 正确
// Output CSV (note empty cell in row 1)
name,status,error
GET /users,pass,
GET /users/999,fail,500

Excel 截断了大整数

Twitter snowflake ID、Discord ID 以及其他 64 位整数超出 JavaScript 的安全范围(2^53 - 1),在 JSON.parse() 读取时会丢失精度。即使 CSV 保留了原始数字,Excel 默认仍会以科学计数法显示。修复方法是双管齐下:在转换前将 ID 以字符串形式存储在 JSON 中,并启用 BOM(或使用 Excel 预设),让 Excel 将单元格保留为文本。

✗ 错误
{"id": 9007199254740993}
// JavaScript reads as 9007199254740992 (precision lost)
✓ 正确
{"id": "9007199254740993"}
// CSV preserves the string; Excel displays exactly

内嵌逗号未加引号

如果你用简单的 join(',') 手工构建 CSV,任何含有逗号的字段(Smith, Jr. 或 1,234.56)都会破坏列边界 — 解析器会看到本应是一列的位置上有多余的列。本工具的「自动」引号模式遵循 RFC 4180,会自动用双引号包裹任何含分隔符、双引号、CR 或 LF 的字段。

✗ 错误
name,role
Smith, Jr.,admin
// Parser reads 3 columns: "Smith", " Jr.", "admin"
✓ 正确
name,role
"Smith, Jr.",admin
// Parser reads 2 columns: "Smith, Jr.", "admin"

Excel-EU 文件无法作为逗号 CSV 阅读

欧洲 Excel 区域设置(德国、法国、西班牙、意大利等)将逗号保留作小数分隔符,并使用分号作为字段分隔符。标准的逗号 CSV 打开时所有行都会塌陷到 A 列。修复方法是 Excel 预设:它切换为 ; + CRLF + UTF-8 BOM,让 Excel 在任何区域设置中都能正确解析文件。

✗ 错误
id,name,price
1,Alice,1,234.56
// Excel-EU mis-parses 1,234.56 as two columns
✓ 正确
// Excel preset output: ; + CRLF + BOM
id;name;price
1;Alice;1234,56
// Excel-EU reads cleanly with comma decimal

NDJSON 未被检测到(输入形状)

NDJSON 自动检测要求每行一个有效的 JSON 值,且没有前导或尾随的数组方括号。如果你粘贴的是 JSON 数组的数组,或文件有前导 [ 和尾随 ],工具会将其视为单个 JSON 值,而不是 NDJSON。请去掉外层方括号,确保每一行都是一个独立的 JSON 对象。

✗ 错误
[
  {"event": "signup"},
  {"event": "login"}
]
// Detected as a regular JSON array (works, but not NDJSON path)
✓ 正确
{"event": "signup"}
{"event": "login"}
// Each line is one JSON value — auto-detected as NDJSON

常见使用场景

API 响应转电子表格
粘贴 REST API 响应(用户/订单/事件对象的数组),获取整洁的表格 CSV,可直接用于 Excel、Google Sheets 或 Numbers。这是最常见的场景 — 分析师和 PM 需要电子表格形态的数据,工程师从后端发出的是 JSON。
MongoDB 导出转数据仓库
将 mongoexport JSON 输出(带 $oid 包装和嵌套元数据文档)转换为 CSV,用于加载到 BigQuery、Snowflake 或 Redshift。当下游工具支持单元格内 JSON 时,字符串化模式可无损保留嵌套形状。
GitHub Issues 整理
从 /repos/{owner}/{repo}/issues 拉取 issues,粘贴 JSON,获取以 id、title、state、labels 和 user.login 为列的扁平 CSV。导入 Sheets 在 sprint 规划期间过滤、排序和分配。
NDJSON 事件日志审查
来自 Cloud Logging、Datadog、Vector 或自有流水线的流式日志通常以 NDJSON(.ndjson、.jsonl)形式抵达。直接粘贴文件内容 — 自动检测 — 即可获取 CSV 进行临时分析,无需启动真正的 ETL 流水线。
电商订单提取
将嵌套订单 JSON(customer.address.city、items 数组)转换为扁平 CSV,用于财务、履约或欺诈审查。展平模式为每个叶子字段生成一列,可直接加载到 Excel 用于临时报表。
Postman/Newman 测试报告
Postman 测试导出包含形状不一致的行(部分含可选 error 字段)。粘贴 JSON,获取所有键取并集、缺失单元格已填充的 CSV — 非常适合在 Sheets 中与非工程师共享失败测试报告。

技术细节

RFC 4180 状态机解析器
两个方向都使用遵循 RFC 4180 的真正有限状态机解析器。状态包括 UnquotedField、QuotedField、AfterQuote、RowEnd 和 EndOfInput。解析器能正确处理含分隔符的带引号字段、带引号字段内的内嵌 CR/LF、转义双引号(加倍如 "")以及尾随换行符。这能产生在 Python csv 模块、PostgreSQL COPY、AWS S3 SELECT 以及任何兼容解析器之间无损往返的输出。
大整数检测算法
在将 JSON 传给 JSON.parse() 之前(后者会通过 IEEE 754 静默地对大整数四舍五入),工具会对原始 JSON 文本运行正则扫描,查找超出安全范围(-2^53+1 到 2^53-1)的整数字面量。检测到时,受影响的字段路径会被记录,输出下方会出现「大整数」警告横幅。CSV 写入器会将这些值保留为字符串,确保通过 Excel、Google Sheets 以及任何文本敏感的下游消费方都能保持精确精度。
面向 Excel 的 BOM 与 UTF-8 编码
所有输入和输出均为 UTF-8。当 BOM 开关开启或选中 Excel 预设时,可选的 UTF-8 BOM(0xEF 0xBB 0xBF)会被添加到输出开头。Windows 上的 Excel 使用 BOM 来检测 UTF-8 编码 — 没有它,Excel 会回退到系统区域设置(美国为 Windows-1252、俄罗斯为 Windows-1251 等),破坏非 ASCII 字符。现代解析器(Python csv、Pandas、jq、PostgreSQL)通常不需要 BOM,并可能将其作为多余字符包含在第一个单元格的开头,因此非 Excel 流水线请关闭 BOM。

最佳实践

调整选项前先选预设
RFC 4180、Excel、TSV 和 Pipe 预设可一次性设定五个选项(分隔符、行结尾、引号模式、BOM、表头)。先选最接近的预设,仅在需要时再微调单个选项 — 这能避免常见错误:切换了一个选项却忘了另一个(例如切换为分号但保留 LF,Windows 上的 Excel-EU 仍会误解析)。
分析用展平,往返用字符串化
当目标是 Excel、Sheets 或一次性分析时使用展平 — 点分隔键能产生最干净的电子表格布局。当你需要无数据丢失的 CSV → JSON → CSV 往返时使用字符串化 — 数组和对象会作为 JSON 保留在单个单元格中。中途切换并重新运行的代价很低;根据消费方选择。
仅在 Excel 场景使用 BOM
Windows 上的 Excel 需要 UTF-8 BOM 才能正确检测编码。其他所有解析器(Python csv、Pandas、jq、PostgreSQL COPY、BigQuery)要么忽略 BOM,要么将其作为多余字符包含在第一个单元格的开头,破坏列名。流水线场景请关闭 BOM,仅当目标是 Excel 时才开启(或使用 Excel 预设)。
在 JSON 中将大 ID 保留为字符串
Twitter snowflake ID、Discord ID、MongoDB Long 字段和 K8s resourceVersion 都是超出 JavaScript 安全范围(2^53 - 1)的 64 位整数。在转换前将其作为 JSON 字符串存储("id": "9007199254740993")— CSV 会精确保留原始数字,而数字字面量会被 JSON.parse() 静默四舍五入。
加载前验证行的形状
形状不一致的行(部分对象有键而其他对象没有)在输出中会被合并并填入空单元格,工具会显示 Schema notes 警告。对于严格 schema 的消费方(BigQuery、Redshift COPY),请在导出前验证所有行共享相同的键 — 或在流水线中显式处理缺失值。先用我们的 JSON 格式化工具检查输入形状。

常见问题

这个工具是做什么的?
它直接在浏览器中将 JSON 转换为 CSV,并支持双向转换:点击「交换方向」即可在同一面板中将 CSV 转回 JSON。在输入区域粘贴 JSON,工具立即生成 CSV 输出 — 无需上传、无需注册,数据不离开你的设备。输出会遵循你选择的预设(RFC 4180、Excel、TSV 或 Pipe),可直接粘贴到 Excel、Google Sheets、数据库 COPY 命令或任何数据流水线。工具能处理对象的扁平数组、嵌套结构(通过展平或字符串化模式)、NDJSON 行分隔输入,以及在电子表格应用中本会丢失精度的大整数值。
我的数据会被上传到任何地方吗?
不会。所有转换 100% 在你的浏览器中通过 JavaScript 完成。你的 JSON 数据永不传输、永不存储在任何服务器上、永不被记录或分析。这使该工具可以安全处理包含 PII 的 API 响应、内部数据库导出、MongoDB 转储以及任何敏感数据。你可以在浏览器的「网络」标签中验证 — 粘贴 JSON 不会触发任何网络请求。工具不使用任何 Cookie 来记录输入数据,也不接入会捕获你粘贴内容的第三方分析。
展平和字符串化模式有什么区别?
展平模式会为嵌套对象生成点分隔键、为嵌套数组生成索引键(customer.address.city、items.0.sku),让每个叶子值都独占一列。这是在 Excel 或 BigQuery 中分析时最易读的布局,但对往返转换是有损的,因为点分隔键结构无法被完美还原。字符串化模式则将数组和对象作为 JSON 保留在单个单元格中({"name":"Alice","city":"Seattle"})— 在电子表格中显得不够美观,但可完全往返:CSV → JSON → CSV 会得到完全相同的数据。分析场景选展平,往返安全选字符串化。请在转换前选定;中途切换会基于当前输入重新执行转换。
工具如何处理 Twitter ID 或 Snowflake 主键这类大整数?
大整数(超过 2^53 - 1,即 9007199254740991)会在 JSON 解析过程中被检测到,输出下方会出现警告横幅。工具会将原始数字以字符串形式保留在 CSV 中,这样 Excel 和 Google Sheets 就不会将其截断为科学计数法。这一点很重要,因为 JavaScript 的 IEEE 754 双精度浮点数会静默对超过 2^53 的整数进行四舍五入 — 例如 9007199254740993 会变成 9007199254740992。如果在上游生成 JSON 时希望保留精度,请将这些 ID 以字符串形式存储("id": "9007199254740993")。工具会在 CSV 中将其保留为字符串,不会有任何精度损失。
为什么 Excel 把我的 CSV 全部显示在一列里?
欧洲的 Excel 区域设置(德国、法国、西班牙、意大利等)期望使用分号作为分隔符,因为逗号被保留作小数分隔符。当你在 Excel-EU 中打开逗号分隔的 CSV 时,所有行都会塌陷到 A 列。请使用本工具的 Excel 预设 — 它会将分隔符切换为 ;、行结尾切换为 CRLF,并添加 UTF-8 BOM,让 Excel 能正确检测编码和列边界。如果要跨地区共享 CSV,更安全的选择是 TSV(制表符分隔),Excel 在所有区域设置中都能一致地处理。
本工具是否支持 NDJSON 或 JSON Lines?
支持。NDJSON(.ndjson)和 JSONL(.jsonl)是行分隔格式,每一行都是一个有效的 JSON 值。直接将文件内容粘贴到输入区域 — 工具会通过查找以换行分隔的多个顶层 JSON 值来自动检测格式,并将每一行作为输出 CSV 中的一行处理。这是流式日志、API 事件导出和许多数据湖流水线的天然格式。NDJSON 不要求外层数组包裹,因此你无需手动将各行合并为一个 JSON 文档。
什么是 RFC 4180?
RFC 4180 是 IETF 在 2005 年制定的规范,将事实标准的 CSV 格式正式编纂成文。它定义了分隔符(通常是逗号)、行结尾(CRLF)、可选的表头行的规则,最重要的是引号规则:包含分隔符、双引号、CR 或 LF 的字段必须用双引号包裹,而内嵌的双引号通过加倍("")来转义。本工具的 RFC 4180 预设会生成严格符合规范的输出:逗号分隔符、CRLF 行结尾、无 BOM、自动转义双引号。这是与 Python(csv 模块)、PostgreSQL COPY、AWS S3 SELECT 以及大多数数据流水线中的解析器进行互操作的最安全选择。
为什么有些单元格被引号包裹,有些没有?
默认的引号模式是「自动」,遵循 RFC 4180:仅当单元格包含分隔符、双引号、回车符或换行符时才用双引号包裹。这样产生的 CSV 最简洁、最易读 — 像 Alice 或 42 这样的值保持不加引号,而像 Smith, Jr. 或 Line 1\nLine 2 这样的值会被包裹。切换到「始终加引号」模式会包裹每一个单元格,即使是简单值 — 适用于下游工具的 CSV 解析器有 bug 而误读未加引号值的场景,或团队流水线要求每个字段都加引号以保持一致性的场景。
我能进行 CSV → JSON → CSV 无损往返吗?
可以,前提是输入是扁平的(无嵌套对象或数组)。对于嵌套数据,必须使用字符串化模式 — 它将数组和对象作为 JSON 保留在单个单元格中,在通过「交换方向」和「推断类型」反向转换后,可无损还原到原始结构。展平模式是单向的:它生成的点分隔键(customer.address.city)无法被完美还原,因为解析器无法区分点分隔键和嵌套路径。当往返安全性受到威胁时,工具会检测嵌套结构并显示 Schema notes 警告,让你在导出前可以切换模式。
如何获取 TSV 文件?
点击 TSV 预设按钮。这会将分隔符切换为制表符、行结尾切换为 LF、并禁用 BOM — 这是 Unix 工具(cut、awk)、数据仓库(BigQuery、Snowflake)以及大多数 Excel 区域设置都能无歧义识别的标准制表符分隔值格式。TSV 通常比逗号 CSV 在跨区域共享时更安全,因为制表符不太可能出现在文本字段中,从而消除了大多数引号边界情况。将输出保存为 .tsv 或 .tab 扩展名,大多数工具都会自动识别。
输入特别大时会发生什么?
超过 100,000 字符或 2,000 行时,实时转换会自动切换为手动模式:信息横幅中会出现「转换」按钮,只有点击时才会执行转换。这可以防止浏览器主线程在每次按键时因繁重的序列化而阻塞。当输出超过 5 MB 或 50,000 行时,工具会将屏幕上的预览截断为前 500 行,并显示「显示前 500 行(共 N 行)」横幅 — 但「下载」按钮仍会生成包含全部行的完整文件。输入硬上限为 10 MB;超过此值工具会显示错误并要求你减少输入。
支持哪些编码?
输入和输出均为 UTF-8。UTF-8 涵盖所有现代字符集,包括 emoji、CJK 表意文字、阿拉伯文、希伯来文以及组合标记。唯一的编码细节是可选的 UTF-8 BOM(字节顺序标记):Windows 上的 Excel 传统上需要 BOM 才能正确检测 UTF-8,否则会回退到系统区域设置并破坏非 ASCII 字符。当你计划在 Excel 中打开 CSV 时,请开启 BOM(或使用 Excel 预设,默认启用 BOM)。其他场景请关闭 BOM — 大多数现代解析器(PostgreSQL、Pandas、jq、Python csv)会出错或将 BOM 作为多余字符包含在第一个单元格的开头。