概念 | 作用 | 例子(字符 “你”) | 功能描述 |
---|---|---|---|
字符 | 人类语言的最小可书写单位 | 你 | 表达意义的抽象符号 |
字符集 | 将字符映射为唯一编号(码点) | 你 → U+4F60 | 标准编号规则,解决不同语言共存问题 |
编码方式 | 将字符编号编码为字节流 | 你 → UTF-8: E4 BD A0 | 存储、传输用的实际数据表示方式 |
类型 | 例子 | 说明 |
---|---|---|
英文字母 | A, B, C… a, b, c… | ASCII 内的基本字符 |
数字 | 0~9 | 十进制阿拉伯数字 |
标点符号 | .,!?;:"' | 控制语言结构 |
控制字符 | \n, \t, \r | 不可观,控制显示和输入 |
中文汉字 | 你, 我, 他 | East Asian 表意文字 |
日文假名 | あ, カ | 平假名、片假名 |
韩文字母 | 가, 나 | 韩语 Hangul 字母 |
Emoji 表情符号 | 😀, 🚀, 🧠 | Unicode 扩展符号 |
字符集名称 | 创建时间 | 字符数量 | 支持语言 | 特点与应用 |
---|---|---|---|---|
ASCII | 1960s | 128 | 英文、控制符 | 最早,兼容性好 |
ISO-8859-1 | 1980s | 256 | 西欧语言 | Latin-1,是 HTML 默认字符集之一 |
GB2312 | 1980s | ~6,700 | 简体中文 | 中国早期标准 |
GBK | 1990s | ~21,000 | 简体中文 | 向下兼容 GB2312 |
BIG5 | 1980s | ~13,000 | 繁体中文 | 台湾和香港常用 |
Unicode | 1991~ | 143,000+ | 全球所有语言 | 国际标准,持续扩展 |
编码名称 | 使用字符集 | 字节数 | 是否变长 | 是否支持 Unicode | 应用领域 | 特点说明 |
---|---|---|---|---|---|---|
ANSI | Windows 编码页码 | 1~2 字节 | 是 | 否 | 中文 Windows 文档 | 非 Unicode,国际不通,依赖系统设置 |
ASCII | ASCII | 1 字节 | 否 | 否 | 英文 | 最基本,最兼容 |
GB2312 | GB2312 | 1~2 字节 | 是 | 否 | 旧中文系统 | 覆盖面小 |
GBK | GBK | 1~2 字节 | 是 | 否 | Windows 系统 | 常用,不是国际标准 |
BIG5 | BIG5 | 2 字节 | 否 | 否 | 台湾地区 | 与 GBK 不兼容 |
UTF-8 | Unicode | 1~4 字节 | 是 | 是 | 网络传输、跨平台 | 为环境最推荐,兼容 ASCII |
UTF-16 LE/BE | Unicode | 2~4 字节 | 是 | 是 | Windows 、Java | BOM项先,内部处理优选 |
UTF-32 LE/BE | Unicode | 4 字节 | 否 | 是 | 数据库、内部处理 | 占空间大,简单管理 |
编码方式 | 十六进制编码 | 字节数 | 备注 |
---|---|---|---|
ANSI (CP936) | C4 E3 | 2 | 与 GBK 相同 |
UTF-8 | E4 BD A0 | 3 | 推荐 |
UTF-16 LE | 60 4F | 2 | Windows 内部使用 |
UTF-32 LE | 60 4F 00 00 | 4 | 内存处理时用 |
ASCII | 不支持 | – | 非 ASCII 范围 |
编码 | BOM (十六进制) | 含义 |
---|---|---|
UTF-8 | EF BB BF | 可选,部分软件识别 |
UTF-16 LE | FF FE | 小端字节序 |
UTF-16 BE | FE FF | 大端字节序 |
UTF-32 LE | FF FE 00 00 | 小端 UTF-32 |
UTF-32 BE | 00 00 FE FF | 大端 UTF-32 |
编程语言 | 默认编码环境 | ANSI 支持 | 建议 |
---|---|---|---|
C/C++ | Windows 默认编码页码 | 支持 ANSI | 统一为 UTF-8 |
Python | Python 3: UTF-8 | 支持 | 明确指定 encoding |
Java | JDK 8 前依系统编码 | 可能是 ANSI | 使用 UTF-8 配置 |
C#/.NET | UTF-8/系统编码 | 支持 ANSI | 注意存档编码选项 |
Notepad | 旧版默认 ANSI | 支持 | 另存时选择 UTF-8 |
问题类型 | 原因 | 解决建议 |
---|---|---|
ANSI 文件乱码 | UTF-8 环境打开 ANSI 文件 | 手动转码或在编辑器中指定编码 |
Git 日志中文乱码 | Git 默认非 UTF-8 编码 | git config i18n.logEncoding gbk |
跨平台 ANSI 错误 | Linux 不识别 ANSI 编码 | 保存时转换为 UTF-8 |
工具名称 | 功能 | 平台 |
---|---|---|
iconv | Linux下编码转换 | Linux |
Notepad++ | Windows 下编码打开、保存 | Win |
Visual Studio Code | 编码显示、下方栏切换编码 | Win/macOS/Linux |
Sublime Text | 支持编码显示和指定 | 跨平台 |
编码定义了字符如何被存储和传输,在环境同一时可以按需使用简单编码(如 ASCII),而跨平台、多语种环境中,建议一定使用 UTF-8 无 BOM 编码,选择标准编码方式对保持编码一致性、避免乱码极为重要!