能力缺口:别再假装懂字符编码
很多开发者写了很多年代码,却始终说不清 ASCII 与 ISO-8859-1 的确切区别,遇到中文乱码只会盲目切换 UTF-8,更无法解释为什么同一个汉字在不同编码下占用的字节数不一样。这门课解决的核心问题,就是彻底打通从字符到字模、从码位到字节存储的底层逻辑。它不讲怎么调库,而是带你回到裸机层面,把文字在计算机里到底长什么样彻底拆解清楚。课程适合有一定编程经验、但在处理多语言文本时总靠试错蒙混过关的技术学习者。如果你在排查跨平台字符显示异常时总是毫无头绪,说明你的体系结构基础在软件层存在断层,这门课就是来补这个缺口的。
学习路线:从码位演进到存储格式的硬核推演
建议先从早期的 ASCII 编码看起,理解单字节如何用低七位表示英文字符,再顺延到 ISO-8859-1 如何补齐高位以兼容西欧语言。这部分看似简单,却是理解后续所有多字节编码的基石。随后重点攻克汉字编码,弄懂双字节设计在处理中文字符时的历史必然性与局限。接着进入万国码的发展历史,这是整门课的重中之重。必须彻底搞懂 UCS4 的组、平面、行、码位四级结构,明白 0 组的 17 个平面是怎么回事,再向下收敛到 UCS-2 与 UTF-8 的存储格式差异。最后,带着实际工程视角去对比 UTF-8、UTF-16 以及 UCS-32 的空间占用,结合具体场景推导存储时该选哪种格式更好。资料包里的内容线索不要只当视频看,遇到码位换算和字节长度推导时,必须暂停播放,自己在纸上把 UTF-8 存储 UCS4 编码的字节流转写一遍。只有手动完成变长编码的位运算拆解,才算真正内化了这些知识,而不是停留在听懂了的错觉里。
看完应能回答的问题与独立产出
学完这门课后,你应该能脱稿回答以下问题:为什么 UTF-8 存储汉字通常占三个字节,而在 UTF-16 下又占几个字节?UCS-2 和 UTF-16 的根本区别在哪里,它们能否完全互相兼容?同一个字符串在内存中的字节序受什么影响?此外,结合字模库的知识,你应能独立解释字符编码与字符图形库的区别,明白屏幕上显示的点阵是如何通过编码映射到具体字模数据的。在配套练习方面,建议自己写一段简单的程序,用不同编码格式存储同一段包含中英文及特殊符号的文本,通过十六进制编辑器查看底层的字节排布,验证课程里讲的大小与存储格式选择规律。当你能看着十六进制字节流直接反推回字符,且能准确判断它在哪个平面、用了哪种存储格式时,这部分体系结构的知识盲区才算真正补齐。
课程目录
1 软件篇课程大纲 (15:39) 2 程序这哥们 (30:23) 3 字符编码与字符图形库(字模库) (27:02) 4 ASCII编码 (22:33) 5 ISO-8859-1编码与ASCII编码的关系 (13:10) 6 汉字编码 (29:19) 7 为什么会出现万国码 (18:28) 8 回顾ASCII和ISO-8895-1编码 (12:51) 9 万国码的发展历史 (15:03) 10 UCS4介绍1之组、平面、行、码位 (17:55) 11 UCS4介绍2之0组17个平面 (09:53) 12 ucs-2存储格式 (12:38) 13 utf-8存储格式 (13:25) 14 使用utf-8存储UCS4编码 (09:43) 15 UCS-16与UCS-32 (17:42) 16 存储时,选择哪种存储格式更好 (11:42) 17 utf-8、utf-16等的大小端问题 (17:51) 18 万国码的BOM信息 (17:35) 19 编辑器如何识别编格式 (14:17) 20 ANSI介绍1 (10:14) 21 ANSI介绍2 (13:23) 22 万国码总结 (08:13) 23 字符图形库(字模库) (19:56) 24 字符编码和字符图形库总结 (15:53)





