1103 字
6 分钟
15KB能装下多少中文字?

问题的由来#

昨天有个朋友问我:“15KB的txt文件,大概能装多少中文字?”

我愣了一下。

说实话,作为一个爱折腾的人,我每天都在和文件大小打交道,但从来没认真算过这个问题。15KB听起来很小,但如果是纯文本,好像也能装不少字?

于是我决定算一算。

基础数学#

首先,15KB等于多少字节?

15 KB = 15 × 1024 = 15,360 字节 (Bytes)

好了,我们有15,360个字节可以用。接下来要看的是:每个中文字占多少字节?

这个问题没有标准答案,因为取决于你用的是什么编码格式。

不同编码的计算#

UTF-8(目前最常用)#

在UTF-8编码中,一个标准的中文字符通常占用3个字节

计算:

15,360 ÷ 3 = 5,120 个中文字

也就是说,15KB的UTF-8文本,纯中文的话能装5120个字

这是什么概念呢?

  • 一篇普通的高考作文是800字,15KB能装6篇
  • 这篇博客文章大概1500字,15KB能装3篇多
  • 《静夜思》是20个字,15KB能装256首

GBK/GB2312(老Windows系统常用)#

在这种编码中,一个中文字符占用2个字节

计算:

15,360 ÷ 2 = 7,680 个中文字

比UTF-8多了2560个字!这就是为什么老系统里中文文档看起来”更省空间”。

UTF-16/Unicode#

UTF-16中,一个中文字符也占用2个字节(加上一点点文件头开销)。

所以和GBK差不多,也是7680个字左右

但实际情况呢?#

上面都是理论值,假设文件里全是纯中文,没有标点、没有数字、没有换行。

但现实中,一篇文章通常包含:

  • 标点符号:中文标点占3字节(UTF-8),英文标点占1字节
  • 阿拉伯数字:每个占1字节
  • 英文字母:每个占1字节
  • 换行符:Windows是\r\n(2字节),Linux/Mac是\n(1字节)
  • 空格:1字节

所以如果你的15KB文件是中英文混合,或者有大量排版空格,实际的中文字数会比理论值多一些

一个有趣的对比#

内容大概字数15KB能装多少
一条微博140字36条
一条朋友圈1500字3条
一篇高考作文800字6篇
《静夜思》20字256首
《论语》全文约15,000字半个《论语》
《红楼梦》约730,000字需要950KB

看到最后一条我突然意识到:原来《红楼梦》用纯文本存的话还不到1MB!

这让我对我硬盘里的那些几GB的”学习资料”产生了深深的怀疑。

编码选择的思考#

既然GBK比UTF-8省空间,为什么现在大家都用UTF-8?

因为UTF-8有几个巨大的优势:

  1. 兼容性好:同时支持中文、英文、日文、emoji等各种字符
  2. 没有乱码问题:GBK文件在英文系统上打开会乱码
  3. 互联网标准:网页、API、现代软件都用UTF-8
  4. 存储不值钱:现在1TB硬盘几百块,那点空间差异可以忽略不计

省下的那点空间,抵不上兼容性带来的麻烦。

延伸思考#

既然15KB能装5000多字,那……

  • 1MB = 1024KB,能装约34万字
  • 1GB = 1024MB,能装约3.5亿字
  • 1TB = 1024GB,能装约3584亿字

作为参考:

  • 《大英百科全书》约4000万字
  • 人类历史上所有出版的书籍加起来估计有1.5亿种,平均每本10万字,就是1500万亿字

所以1TB存不下全人类的书,但存下一家小型图书馆还是没问题的。

写在最后#

回到最初的问题:15KB能装多少中文字?

答案是:大约5000到7500字,取决于你用的是什么编码。

下次有人问你这个问题,你可以装作很懂行的样子说:

“看编码格式,UTF-8的话大概五千出头,GBK能到七千多。不过现代环境都用UTF-8,建议按五千来估算。”

然后看着对方懵逼的表情,深藏功与名。


小知识:微信聊天记录导出后,一年的记录通常也就几MB到几十MB。那些说”手机满了存不下聊天记录”的人,可能是在找借口。

参考来源#

15KB能装下多少中文字?
https://im.awsl.app/posts/system-ops/007-15kb-chinese-characters/
作者
uu
发布于
2023-08-20
许可协议
CC0 1.0