不同编码(GB2312, UTF-8, UTF-16)下中文内容的占用大小的区别

楔子

有一次 一个人问 有什么编码能使用一个字节存储中文 当然 结果是否定的 中文没法做到一个字节存储

可是 如果是压缩呢 于是有此测试

结果

直接放结果 数据单位是字节

文章 (中文/全部字数)/编码 GB2312 UTF-16注1 UTF-8注2 GZIPed UTF-16 GZIPed UTF-8
Wiki的【量子力学】词条的源码 (13135/32873) 43,782注3 66,436 59,111 27,491 27,282
《共产党宣言》 (30352/35993) 62,594 64,634 92,670 32,554 38,593

注1 UTF-16-LE-DOS 这也就是Windows记事本的Unicode保存出来的编码
注2 UTF-8-UNIX
注3 此编码缺一些繁体字,用相应的简化字代替。

结论

  • 对于中英文混杂的情况 UTF-8在大小上占优势 对于中文占主要的情况 UTF-16占优势
  • 压缩后 UTF-8和UTF-16在大小上区别不明显
  • 对于大段内容(至少几万字罢) 靠压缩能做到一个字节一个汉字