我想知道下面这句话对我们的假人来说简单来说意味着什么?
什么是字节序列?一个字节中有多少个字符?
iconv_strlen() counts the occurrences of characters in the given byte sequence str on the basis of the specified character set, the result of which is not necessarily identical to the length of the string in byte.
答案 0 :(得分:12)
我们以日语字符'こ'为例。假设UTF-8编码,这是一个3字节字符(0xE3 0x81 0x93)。让我们看看当我们使用strlen
时会发生什么:
$ php -r 'echo strlen("こ") . "\n";'
3
结果为3,因为strlen
正在计算字节数。但是,根据UTF-8编码,这只是一个字符。这就是iconv_strlen
的用武之地。它知道在UTF-8中,这是一个单个字符,即使它由3个字节组成。所以,如果我们尝试这样做:
$ php -r 'echo iconv_strlen("こ", "UTF-8") . "\n";'
1
我们得到1.这就是说明要指出的内容。
答案 1 :(得分:3)
答案 2 :(得分:1)
字符串具有特定的字节长度。当且仅当字符串中的每个字符由单个字节表示时,该字符串中的字符数将等于字节数。例如,英语字母就是如此。对于使用多于一个字节来表示一些或所有字符的表示(即编码),字符数将小于字节数*。例如,用一个字节表示所有可能的中文字符是不可能的。
因此,给定编码的iconv_strlen将尝试计算字符串中的字符数。字节序列是字符串中的字节顺序。对于包含中文的字符串,使用UTF8编码,例如,您可能有一个包含14个字符的20字节字符串。
*如果一个字符由少于一个字节表示,则可能更多。
答案 3 :(得分:0)
iconv_strlen()
根据指定的字符集计算给定字节序列str
中字符的出现次数,其结果不一定与字节中字符串的长度相同。 / p>
文:
byte sequence
: string 的另一个字,它是一个字节序列(1字节= 8位),例如:01011010 00011001 01101011
。字节序列代表字符,如A
,B
,C
等。character set
:a.k.a。 encoding ,指定字节如何映射到字符;例如01000001
代表the ASCII character set中的A
。not necessarily identical to the length […] in byte
:在ASCII字符集中,一个字节恰好代表一个字符。所有字符集都不是这种情况;在一些两个,三个或更多字节用于表示一个字符。这是因为一个字节只能容纳256个不同的值,而某些语言使用超过256个字符(如中文和日文)编写。 Unicode甚至尝试在单个字符集中映射所有人类语言的所有字符,这需要每个字符多于一个字节。总结:
iconv_strlen()
计算给定字符串中的字符,同时考虑字符集。因此,字符数可能不等于字节数。