Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP iconv_strlen()意思是问题_Php_Iconv - Fatal编程技术网

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,字节和字符计数是相同的。但是阅读下面的文章,它值得一读。