regex 总览待审核
实战 · 逐字符拆码点

code point 检视器:任意文本逐字符拆码点

把本系列拆过的几层字符模型合到一个真实工具里:在文本框里输入或粘贴任意文本,下面就把它逐个 code point 摊开—— 每个码点的 U+ 编号、所属 General_CategoryBlock、以及 UTF-8 / UTF-16 两套存储层的字节。多个 code point 拼成的 字素簇(emoji 序列、组合记号)会被虚线框聚拢,直观看出 「用户眼里的一个字符」常常不是一个 code point。顶部四层计数同时给出字形 / code point / UTF-16 码元 / UTF-8 字节四个口径。

逐 code point 拆解(多码点字素簇用虚线框聚拢)

怎么读这张拆解:每张卡片是一个 code point——左上是字形(看不见的字符用 占位并在下方标出角色), 右上 U+XXXX 是它的编号,角标是 General_Category 大类(L 字母 / N 数字 / P 标点 / S 符号 / M 组合记号 / Z 分隔 / C 控制等)。 UTF-8 行是它在磁盘 / 网络上的字节(1~4 字节变长),UTF-16 行是它在 JS 字符串里的码元—— 补充平面字符(> U+FFFF)在这里会显示成两个码元(代理对)。 字形数 ≠ code point 数 ≠ 码元数:这正是本系列反复强调的一点。🤦🏼‍♂️ 一个字形 = 5 个 code point、 7 个 UTF-16 码元、17 个 UTF-8 字节;é 写成 e + 组合附标时是两个 code point 却仍是一个字形。 按 str.length(码元)截断会切碎序列、产生半个乱码;要按用户感知数,得按字素簇数(Intl.Segmenter)。 本工具把四个口径并列,就是为了让这层差异一眼看清。 和别的页配合:这页是——把任意文本拆开看清里面到底有什么; 受控文本输入框那页是——按字形限长、受控注入控制字符。 想深挖某一层:码点 ⇄ UTF-16 代理对的换算、UTF-8 字节怎么摊,都在 字符的编码、字素簇边界规则在 字素簇