一、概览总览表:字符 → 字符集 → 编码方式的关系概念
作用
例子(字符 “你”)
功能描述
字符
人类语言的最小可书写单位
你
表达意义的抽象符号
字符集
将字符映射为唯一编号(码点)
你 → U+4F60
标准编号规则,解决不同语言共存问题
编码方式
将字符编号编码为字节流
你 → UTF-8: E4 BD A0
存储、传输用的实际数据表示方式
二、字符和字符集2.1 常见字符类型表类型
例子
说明
英文字母
A, B, C… a, b, c…
ASCII 内的基本字符
数字
0~9
十进制阿拉伯数字
标点符号
.,!?;:"'
控制语言结构
控制字符
\n, \t, \r
不可观,控制显示和输入
中文汉字
你, 我, 他
East Asian 表意文字
日文假名
あ, カ
平假名、片假名
韩文字母
가, 나
韩语 Hangul 字母
Emoji 表情符号
😀, 🚀, 🧠
Unicode 扩展符号
2.2 字符集对比字符集名称
创建时间
字符数量
支持语言
特点与应用
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+
全球所有语言
国际标准,持续扩展
三、编码方式详解3.1 常见编码方式对比编码名称
使用字符集
字节数
是否变长
是否支持 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 字节
否
是
数据库、内部处理
占空间大,简单管理
3.2 编码实例:“你”编码方式
十六进制编码
字节数
备注
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 (Byte Order Mark)编码
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 支持编程语言
默认编码环境
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
附录、编码相关工具和网站A. 工具推荐工具名称
功能
平台
iconv
Linux下编码转换
Linux
Notepad++
Windows 下编码打开、保存
Win
Visual Studio Code
编码显示、下方栏切换编码
Win/macOS/Linux
Sublime Text
支持编码显示和指定
跨平台
B. 官方资料/网站Unicode 官网:https://unicode.orgMicrosoft Code Pages: https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiersIANA Charset Registry:https://www.iana.org/assignments/character-sets/character-sets.xhtml总结编码定义了字符如何被存储和传输,在环境同一时可以按需使用简单编码(如 ASCII),而跨平台、多语种环境中,建议一定使用 UTF-8 无 BOM 编码,选择标准编码方式对保持编码一致性、避免乱码极为重要!
结束语
本节内容已经全部介绍完毕,希望通过这篇文章,大家对编码有了更深入的理解和认识。相关文章:指针的神秘探险:从入门到精通的奇幻之旅 !