code point 检视器:任意文本逐字符拆码点
把本系列拆过的几层字符模型合到一个真实工具里:在文本框里输入或粘贴任意文本,下面就把它逐个 code point 摊开—— 每个码点的 U+ 编号、所属 General_Category 与 Block、以及 UTF-8 / UTF-16 两套存储层的字节。多个 code point 拼成的 字素簇(emoji 序列、组合记号)会被虚线框聚拢,直观看出 「用户眼里的一个字符」常常不是一个 code point。顶部四层计数同时给出字形 / code point / UTF-16 码元 / UTF-8 字节四个口径。
逐 code point 拆解(多码点字素簇用虚线框聚拢)
▢ 占位并在下方标出角色),
右上 U+XXXX 是它的编号,角标是 General_Category 大类(L 字母 / N 数字 /
P 标点 / S 符号 / M 组合记号 / Z 分隔 / C 控制等)。
UTF-8 行是它在磁盘 / 网络上的字节(1~4 字节变长),UTF-16 行是它在 JS 字符串里的码元——
补充平面字符(> U+FFFF)在这里会显示成两个码元(代理对)。
🤦🏼♂️ 一个字形 = 5 个 code point、
7 个 UTF-16 码元、17 个 UTF-8 字节;é 写成 e + 组合附标时是两个 code point 却仍是一个字形。
按 str.length(码元)截断会切碎序列、产生半个乱码;要按用户感知数,得按字素簇数(Intl.Segmenter)。
本工具把四个口径并列,就是为了让这层差异一眼看清。