一个英文字母等于一个中文字符吗?

3
我是一名用户体验设计师,我们正在开发一个产品,需要为用户提供文本输入框以插入他们的注释。无论用户使用繁体中文或英语输入,都需要有字数限制指示

Input text field_with character limit_example

我的问题是:

如果字符限制为15,那么我这样说对吗:

  • I am in Sweden(11/15个字符)

  • 我在瑞典(4/15个字符)

有人告诉我,一个汉字算作2个字节的代码,一个英文字母算作1个字节。这会如何影响字符限制?我想确保我的设计对开发人员来说尽可能清晰。


4
你是指有字符限制,而不是字数限制,对吗?答案取决于你为什么首先设定了字符限制。 - Ry-
我同意Ry的两点观点。另外,如果有人输入了一个四字节字符,你想做什么? - kojow7
你关心它占用多少存储空间还是需要多少展示空间? - Zang MingJie
1
“Character limit” 是模糊不清的。您是在计算 Unicode 代码点、字形、编码字节数(以及使用哪种编码)?例如,“瑞典”是一个中文词,两个 Unicode 代码点,在UTF-16LE 中为4个字节,在 UTF8 中为6个字节。“resumé” 被认为是一个英文单词,但它有6或7个Unicode代码点,在UTF-16LE中有12或14个字节,在UTF-8中有7或8个字节,这取决于“é”是组合字符还是分解字符。 - Mark Tolonen
谢谢大家!基本上,这是一个SaaS经理。在开票流程中,用户可以添加备注,该备注将应用于打印的发票。我们希望限制内容,否则它将填满整个页面。因此,我们大致想将其限制在250个单词以内(包括中英文)。 - user10481675
1个回答

1
所以这是关于显示大小的问题,对吧?在这种情况下,计算单词数是没有用的,因为一个单词可以很长。计算字符稍微有些有用,但也不能保证消息最终适合,因为不同的字符具有不同的宽度。举个例子,这四个字符串都包含五个字符:

  • "​​​​​"
  • "     "
  • "WWWWW"
  • "﷽﷽﷽﷽﷽"

真的没有一种优雅的方法来解决这个问题。您需要知道您正在使用的字体的精确度量,然后计算每个输入的视觉宽度。如果您接受“足够接近”的解决方案,您可以使用元素的maxlength属性。但是,HTML和JavaScript计算UTF-16代码单元,这意味着所谓的基本多语言平面中的字符计为1,而其他所有内容都计为2。
基本多语言平面包含了99%的常用字符,因此绝大多数用户可能不会注意到任何问题。您可以使用JavaScript进行更高级的操作,但我认为对于这种任务来说并不是必要的。
请记住,即使采用这种方法,也不能保证用户的输入在打印时 视觉上 符合要求,除非您预留了很多空白区域以防万一。一定要尝试一些窄字符和宽字符,看看它们在打印时实际占用了多少空间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接