计算多字节字符的数量

Posted

技术标签:

【中文标题】计算多字节字符的数量【英文标题】:Counting the number of multi-byte characters 【发布时间】:2011-11-13 04:46:12 【问题描述】:

我有包含多字节字符的文本,如图所示:

위키백과,백과사전。

대수(λ -, lambda -)는 함. 1930년대다. 함수 s(x, y) = x*x + 입력 x 것이다。 x ↦ x 와 y ↦ y 는 변수의 이름은。 또한 (x, y) ↦ x*x + y*y 와 (u, v) ↦ u*u + v*v 는.123456

在文字处理器中,它给我的字符数是 148。

在以 UTF-8 编码的 html 表单上,它使用了属性为 maxlength = 150TEXTAREA 字段。

使用 php 函数 mb_strlen($_POST['text'],'UTF-8'),它返回值 152

哪个是正确的?

【问题讨论】:

哪个字处理器?也许他们不把换行符算作字符? @Yzmir Ramirez,libreoffice 作家。你是对的,它不计算换行符。那为什么 HTML 和 PHP 有区别呢? 【参考方案1】:

我会说他们都是正确的。

没有行尾是 148。

行尾是 150 或 152,具体取决于编码(Windows 使用每个行尾 2 个字符)。

【讨论】:

您能详细说明一下吗?我不明白。你的意思是 PHP 算了两个额外的\ns,HTML 算了一个? 在 Windows 中,换行符是两个字符 \n\r,但在 Mac OS X 和 *nix 机器上,它的 \n\r 对于 Mac OS(最多 9 个),如果我有记忆的话正确。换行历史en.wikipedia.org/wiki/Newline @Yzmir Ramirez,我明白了.. 我使用的是 Linux。 @BenHuh 如果插入另一行,输出是什么? 153和156? 我猜 HTML 将换行视为一个字符,PHP 将其视为两个,而文字处理器根本不计算换行。

以上是关于计算多字节字符的数量的主要内容,如果未能解决你的问题,请参考以下文章

字符串的长度,是字符数量,还是字节数量?

字符集研究之多字节字符集和unicode字符集

快速计算数组中零值字节的数量

第十章 创建计算字段

Substring (后缀数组 + 计数)

什么是字节?一个字节有多大啊?