PHP iconv_strlen()意思是问题
我想知道下面这句话对我们这些傻瓜来说是什么意思 什么是字节序列?一个字节有多少个字符PHP iconv_strlen()意思是问题,php,iconv,Php,Iconv,我想知道下面这句话对我们这些傻瓜来说是什么意思 什么是字节序列?一个字节有多少个字符 iconv\u strlen()根据指定的字符集统计给定字节序列str中字符的出现次数,其结果不一定与字节中字符串的长度相同。让我们以日语字符为例こ'. 假设UTF-8编码,这是一个3字节字符(0xE3 0x81 0x93)。让我们看看使用strlen时会发生什么: $ php -r 'echo strlen("こ") . "\n";' 3 结果是3,因为strlen正在计算字节数。然而,根据UTF-8编码,
iconv\u strlen()根据指定的字符集统计给定字节序列str中字符的出现次数,其结果不一定与字节中字符串的长度相同。
让我们以日语字符为例こ'. 假设UTF-8编码,这是一个3字节字符(0xE3 0x81 0x93)。让我们看看使用strlen时会发生什么:
$ php -r 'echo strlen("こ") . "\n";'
3
结果是3,因为strlen正在计算字节数。然而,根据UTF-8编码,这只是一个字符。这就是iconv\u strlen的用武之地。它知道在UTF-8中,这是一个字符,即使它由3个字节组成。因此,如果我们尝试这样做:
$ php -r 'echo iconv_strlen("こ", "UTF-8") . "\n";'
1
我们得到1。这就是那个解释要指出的。字符串具有特定的字节长度。当且仅当字符串中的每个字符由单个字节表示时,该字符串中的字符数将等于字节数。例如,对于英文字母来说,这是正确的。对于使用多个字节表示部分或所有字符的表示(即编码),字符数将小于字节数*。例如,不可能用一个字节来表示所有可能的汉字 因此,给定编码,iconv_strlen将尝试计算字符串中的字符数。字节序列是字符串中字节的顺序。例如,对于使用UTF8编码的包含中文的字符串,您可能有一个包含14个字符的20字节字符串 *如果一个字符用少于一个字节来表示,那么它可能会更多
iconv\u strlen()
根据指定的字符集统计给定字节序列中字符的出现次数str
,其结果不一定与字节中字符串的长度相同
翻译:
:字符串的另一个单词,是字节序列(1字节=8位),例如:字节序列
。字节序列表示诸如01011010 00011001 011011011011
、A
、B
等字符C
:也称为编码,指定字节如何映射到字符;e、 g.字符集
表示中的01000001
A
:在ASCII字符集中,一个字节正好代表一个字符。并非所有字符集都是如此;在某些情况下,三个或更多字节用于表示一个字符。这是因为一个字节只能容纳256个不同的值,而有些语言使用的字符数超过256个(如中文和日文)。Unicode甚至试图将所有人类语言的所有字符映射到单个字符集中,这需要每个字符超过一个字节不一定与字节长度[…]相同
iconv\u strlen()
计算给定字符串中的字符数,同时考虑字符集。因此,字符数可能不等于字节数
计数字符,而不是字节。其中,对于ascii,字节和字符计数是相同的。但是阅读下面的文章,它值得一读。