E2.08.3count-unit mismatch设计研究

计数单位需与用户理解一致

别名: 字符还是字节 · word count vs character · 中文词数

概念解释

屏幕写着「还可输入 12」,人按自己的单位去理解:中文用户数汉字,英文用户数单词或字母,工程师数字节,短信网关数 septet。界面若按另一种单位在减,就会出现计数单位不一致(count-unit mismatch):看起来还剩 12,贴一个汉字或一个 emoji 却少了 2,甚至直接顶格。它管的是减的是什么,不是计数器何时亮,也不是超了就切掉。

机制

「字」在自然语言里不是一个工程量。Unicode 里一个视觉字符可能是多个码点(组合音符、emoji 序列);UTF-8 下中文三字节、emoji 更多;Twitter 一类产品曾按加权单位计。用户看见的是字形,系统减的是码点、字节或加权。每次按键的递减步长对不上预期时,人会以为计数器坏了,或在接近上限时不敢用标点、表情。中英文混合时更乱:空格算不算、英文单词算 1 还是按字母算。单位不一致会把「还剩多少」从刹车变成谜题。

怎么研究

让人在已知上限下尽量写满,比较他们以为的剩余与系统剩余,并记录 emoji、组合字符、换行、中英混合处的争议。自变量:展示单位的名称(字 / 字符 / 词 / 字节)、是否把换行算入、是否对 emoji 加权。因变量:预测误差、在上限附近改用「安全字符」的次数。不要只用 BMP 基本汉字当测试集。把界面文案里的单位词和实际算法对照,是成本最低的审计。

边界

后端存储按字节、界面按字形,两边单位可以不同,但必须在提示里说清「按显示字符,约合 N」,不能假装是同一个数。搜索关键字、标签往往按 token 而不是按字,把字数器搬过去会错。无空格语言没有「词」的直觉单位,英文产品的 word count 对中文用户没有意义。屏幕阅读器读「还剩十二」时若不带单位,听觉通道同样发生错配。

怎么落地

  • 选定与用户任务相同的单位(中文界面多数用「字」= 一个可见字符),在文案里写死这个词,不要只显示光秃数字。
  • 让一个可见字符(含常见 emoji)对应一次递减;若技术上必须按字节,就在说明里写「按字节,汉字约三倍」。
  • 审计换行、空格、零宽字符是否计入,并与文案一致。
  • 验证:分别输入 10 个汉字、10 个字母、10 个 emoji、一段中英混排,看计数是否按人能点着数的个数在减。步长跳变或文案写「字」却按字节减,就改算法或改用词。

延伸

  • 同组E2.08.1 限制应在接近上限时提示而非始终显示 · E2.08.2 硬截断会静默丢失内容
  • 相邻E2.19 货币、单位与量纲输入 · E2.20 标签输入
  • 站内检索count-unit mismatch · grapheme versus code point · word count

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.08.3