ASCII 文本表格怎么画:用 +-| 把数据排成对齐的等宽表
一篇讲清楚 ASCII 文本表格的实战指南:用加号减号竖线画边框,从 CSV 数据生成对齐的等宽表,放进终端输出、代码注释、纯文本文档和邮件,附中英混排对齐技巧。
ASCII 文本表格怎么画:用 +-| 把数据排成对齐的等宽表
写代码这些年,我反复遇到同一个小尴尬:手里有一份小数据,想贴进 README、代码注释、终端横幅或者一封纯文本邮件,结果发现这些地方都不渲染 Markdown 表格。逗号分隔的文本读起来费劲,HTML 表格在等宽环境里根本不显示。这时候真正能救场的,是一张用 ASCII 字符画出来的文本表格。
ASCII 表格的原理很朴素:只用键盘上能打出来的三个字符,加号、减号和竖线,把每一列框起来,再靠等宽字体让每一格的边界垂直对齐。它不依赖任何渲染器,复制到哪里都长一个样。
ASCII 表格长什么样
先看一个具体例子。假设你有两行数据:
Name,City
Alice,Berlin
选 ASCII 边框、首行当表头,生成出来是这样:
+-------+--------+
| Name | City |
+-------+--------+
| Alice | Berlin |
+-------+--------+
横线用减号,竖线用竖线,拐角和交叉点用加号,整张表只有这三种字符加空格。它能原封不动地贴进任何编辑器、任何终端、任何提交说明,永远不会因为对方字体不支持而变成乱码。
边框是怎么画出来的
理解了字符分工,画法就清楚了。每一列先量出最宽的那个单元格有多少字符,按它定列宽,短的单元格右边补空格补齐。横向的顶线、分隔线、底线,都是减号填满列宽、列与列之间用加号接缝。竖线则负责把每一格的左右边界立起来。
举个三列的例子,+------+--------+-----+ 这条顶线里,加号的位置正好对应竖线的位置,所以上下两条线的接缝是垂直贯通的。只要列宽算对、补齐到位,整张表的边框就笔直不歪。如果你想要更精致的观感,还可以换成 Unicode box 风格,用 ┌ ─ ┬ ┐ │ └ ┴ ┘ 这些专门的制表符,拐角看起来是一整圈连续的框,而不是加号堆出来的。但要记住一条:不确定对方终端或邮件客户端支不支持 UTF-8 时,老老实实用 ASCII 最稳妥。
这种表实际用在哪
我自己最常用到 ASCII 表格的,是下面这几个场景:
- 项目 README:用代码块包住表格,它在 GitHub 网页、原始 .md 文件和别人的编辑器里看起来都一样,不依赖 Markdown 渲染器。
- 代码注释:一个配置结构体有十来个字段,在它正上方放一张对齐的速查表,比一大段散文好读太多,而且所有支持等宽注释的语言都能用。
- 终端横幅:脚本启动时打印一份检测到的设置摘要,固定列宽保证它在标准 80 列终端里不会换行或错位,也不用引入任何表格渲染库。
- 纯文本邮件和提交说明:这些地方不渲染 Markdown 表格,代码块里的 ASCII 表能让每个读者看到的列都对齐。
只要读者看到的是等宽字体,ASCII 表都比逗号分隔的文本好读。
从 CSV 数据一键生成
手动画 ASCII 表格非常枯燥,数空格数到眼花。实际操作里我都是把数据交给 ASCII 表格生成器 来排:把 CSV 或 TSV 粘进去,选好分隔符,指定首行是否当表头,每一列还能单独设左对齐、居中或右对齐,剩下的补齐和画框它全包了。从 Excel、Google 表格或 Numbers 复制的数据是用制表符分隔的,把分隔符切到「制表符」就能直接粘。
它和 Markdown 系的表格工具是互补关系。如果你的目标平台会渲染 Markdown,那直接用 Markdown 表格生成器 产出管道表更合适;如果手里是一份 CSV 文件想转成 Markdown,CSV 转 Markdown 表格 更顺手。而当目标环境根本不渲染 Markdown,只认等宽字符时,ASCII 表格才是那把对的钥匙。
对齐:中英混排最容易踩的坑
多数在线工具最容易做错的,是中文宽度。等宽字体里一个汉字、假名或谚文音节占两格,而不是一格。如果按字符数补空格,含中文的那一列就会偏短,边框跟着歪扭。
具体例子:一张双语功能对比表,表头是英文、单元格是中文。开着「中文按 2 宽」,每个汉字都按两格算,放「北京」的那一列才能对齐放 Berlin 的那一列,边框保持笔直。反过来,如果你要粘进一个把中文当单宽渲染的环境,就把这个开关关掉,改成按字符数补。对齐方向也值得花十秒选一下:数字列右对齐读起来最舒服,文本列左对齐,标题列居中,一张表的专业感往往就差在这里。
画一张对齐的 ASCII 表本身不难,难的是把列宽、补齐、CJK 宽度和分隔符这几件事同时做对。把这些交给工具,你只管粘数据、选选项、点复制,得到一张在任何等宽环境里都笔直的文本表格。
Made by Toolora · Updated 2026-06-13