簡體   English   中英

PHP iconv_strlen()意思是問題

[英]PHP iconv_strlen() meaning question

我想知道下面的句子對我們的假人來說簡單來說意味着什么?

什么是字節序列? 一個字節中有多少個字符?

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.

讓我們以日語字符'こ'為例。 假設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.這就是解釋的意思。

字符串具有特定的字節長度。 當且僅當字符串中的每個字符由單個字節表示時,該字符串中的字符數將等於字節數 例如,英語字母就是如此。 對於使用多個字節表示一些或所有字符的表示(即編碼),字符數將小於字節數*。 例如,用一個字節表示所有可能的中文字符是不可能的。

因此,給定編碼的iconv_strlen將嘗試計算字符串中的字符數。 字節序列是字符串中的字節順序。 對於包含中文的字符串,使用UTF8編碼,例如,您可能有一個包含14個字符的20字節字符串。

*如果一個字符由少於一個字節表示,則可能更多。

iconv_strlen()根據指定的字符集計算給定字節序列str中字符的出現次數,其結果不一定與字節中字符串的長度相同。

翻譯:

  • byte sequence字符串的另一個字,它是一個字節序列(1字節= 8位),例如: 01011010 00011001 01101011 字節序列表示 ABC等字符。
  • character set :aka encoding ,指定字節如何映射到字符; 例如01000001表示ASCII字符集中的 A
  • not necessarily identical to the length […] in byte :在ASCII字符集中,一個字節恰好代表一個字符。 所有字符集都不是這種情況; 在一些兩個,三個或更多字節用於表示一個字符。 這是因為一個字節只能容納256個不同的值,而某些語言使用超過256個字符(如中文和日文)編寫。 Unicode甚至嘗試在單個字符集中映射所有人類語言的所有字符,這需要每個字符多於一個字節。

綜上所述:

iconv_strlen()計算給定字符串中的字符,同時考慮字符集。 因此,字符數可能不等於字節數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM