字符编码
字符编码是一套把字符(字母、汉字、标点、emoji 等)与字节序列相互转换的规则。计算机底层只能存字节,编码规定了「每个字符写成哪些字节」,以及反过来「一串字节该读回成什么字符」。常见的有 ASCII(单字节、仅英文)、GBK(中文)以及 Unicode 体系下的 UTF-8、UTF-16、UTF-32。其中 UTF-8 兼容 ASCII、用 1–4 字节变长表示,是当今 Web 的事实标准。
使用中的要点与常见误区:
常见问题
UTF-8 和 Unicode 到底是什么关系?
Unicode 是字符集,负责给每个字符分配一个码点(如「中」是 U+4E2D);UTF-8 是一种编码方式,规定这些码点怎么用字节存储。简单说 Unicode 管「编号」,UTF-8 管「怎么落到字节」。
网页或文件出现乱码该怎么排查?
乱码基本都是读写编码不一致导致的。先确认文件的真实编码,读取时用同一种编码;网页要保证 HTTP 响应头或 <meta charset> 与文件实际编码一致。全链路统一用 UTF-8 最省心。
一个汉字占几个字节?
取决于编码:UTF-8 下常见汉字占 3 字节,GBK 下占 2 字节,UTF-16 下多为 2 字节。所以脱离具体编码谈「几个字节」是没有意义的。