易君召
发布于 2026-09-08 / 作者:易君召 / 3 阅读
0

常见编码格式以及用途

编码就是把字符(文字、符号)转换成计算机能存的二进制字节,不同编码对字符的字节长度、支持字符集不一样。

1. ASCII

  • 字节:1 字节,只能表示 0‑127

  • 包含:英文字母大小写、数字、半角符号、控制字符(换行、回车)

  • 用途:最早基础编码,英文、程序源码、简单配置文件;不支持中文

缺点:没有汉字,国内直接用会乱码。

2. GB2312

  • 字节:英文 1 字节,汉字 2 字节

  • 包含:简体中文、少量符号

  • 用途:国内早期简体中文文档、老系统。

局限:没有繁体、日文、生僻字。

3. GBK(最常用老中文编码)

  • 字节:英文 1 字节,汉字 2 字节

  • 兼容:向下兼容 GB2312,增加繁体中文、部分日韩字符、生僻字

  • 用途:Windows 中文系统默认旧编码;老 txt、exe、bat、国内老数据库、网页老页面。

Windows 记事本另存为里的「ANSI」在中文系统实际就是 GBK

4. GB18030

  • 字节:1/2/4 字节可变;完全兼容 GBK

  • 包含:全部中日韩汉字、极多生僻字,国家强制标准

  • 用途:政务系统、国产软件、数据库,推荐国内新系统优先 GB18030 替代 GBK

5. UTF‑8(互联网主流)

  • 可变长:ASCII 字符 1 字节,中文 3 字节,生僻字 4 字节

  • 完全兼容 ASCII,全球所有语言字符

  • 用途:网页、JSON、接口、源代码、Linux/macOS、日志、数据库、绝大多数现代项目

互联网事实标准,跨平台几乎不会乱码。

6. UTF‑16

  • UTF‑16LE / UTF‑16BE

  • 大部分字符 2 字节,部分生僻字 4 字节;LE 小端、BE 大端代表字节存储顺序

  • 用途:Windows 内核、Java 内部字符串、.NET、部分 Windows 文档;不适合网络传输,体积大

Windows 记事本 “Unicode” 就是 UTF‑16‑LE。

7. UTF‑32

  • 固定 4 字节存每个字符

  • 用途:底层文本处理、极少用于存储传输,占用空间巨大。

关键对比 & 场景选型

编码

中文字节

跨平台

典型使用场景

GBK

2 字节

差,Linux 下易乱码

老 Windows 本地文件、老业务系统

GB18030

2‑4 字节

一般

国内政务、国产软件

UTF‑8

3 字节

优秀

接口、网页、日志、源码、Linux

UTF‑16LE

2 字节

Windows 内部、Java 内存字符串

容易踩坑的乱码场景

  1. Windows 保存 GBK 的 txt 丢到 Linux 打开 → 乱码;解决:保存为 UTF‑8

  2. 接口返回 GBK,程序按 UTF‑8 解析 → 乱码;需要指定正确编码解码

  3. UTF‑8 with BOM:文件头部多 3 个字节标记,Windows 记事本保存 UTF‑8 会带 BOM;shell 脚本、Python 源码不要 BOM,会报错

简单选型建议

  1. 对外接口、Web、前后端、日志、Linux 环境:一律 UTF‑8(无 BOM)

  2. 国内政务、老 Windows 存量系统:优先 GB18030,尽量不用 GBK

  3. 不要用 UTF‑16 做文件存储和网络传输。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/common-encoding-formats-purposes-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/