kitlau
kitlau

kitlau's blog

ASCII


彻底理解 ASCII Unicode UTF-8 UTF-32 是什么以及区别与联系

本文系统梳理了计算机字符编码体系中的核心概念与逻辑关系。字素(grapheme)作为人类书写的最小单位,可由多个编码点(code point)构成,而每个编码点需通过特定编码方案(如ASCII、UTF-8、UTF-16)转换为字节序列。ASCII仅支持128个字符且字符代码与编码值一致,而Unicode字符集通过编码点(如👍对应U+1F44D)涵盖全球文字,其编码策略中UTF-8采用1-4字节变长编码,UTF-16固定16位编码。编码方式直接影响数据解析结果——误用ASCII解析UTF-8编码或反之均会导致乱码,且不同编程语言处理字符串长度时因编码策略差异产生矛盾(如C#的UTF-16编码中👍占2长度,Python Unicode字符串中占1长度)。开发者需区分"不可感知Unicode的函数"(按字节处理)与"可感知Unicode的函数"(按编码点处理),在精确场景中进一步采用"可感知字素的函数"。教育体系中需区分"字符集"(如ASCII/Unicode)与"编码方案"(如UTF-8/UTF-16)的层级关系,理解字符代码(code point)到字符编码(byte sequence)的转换过程,避免因编码认知不足引发的字符串处理异常。--Qwen3

dotnet ASCII Unicode UTF 8 Go Programming Language Character Encoding

  • 1