Ich habe mich gefragt, was der folgende Satz für uns Dummies bedeutet?
Und was ist Bytefolge? Und wie viele Zeichen in einem Byte?
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.
Nehmen wir zum Beispiel das japanische Zeichen 'こ'. Unter der Annahme der UTF-8-Codierung ist dies ein 3-Byte-Zeichen (0xE3 0x81 0x93). Mal sehen, was passiert, wenn wir stattdessen strlen
verwenden:
Das Ergebnis ist 3, da strlen
Bytes zählt. Dies ist jedoch nur ein einzelnes Zeichen gemäß UTF-8-Codierung. Hier kommt iconv_strlen
ins Spiel. Es weiß, dass es in UTF-8 ein einzelnes Zeichen ist, obwohl es aus 3 Bytes besteht. Also, wenn wir das stattdessen versuchen:
Wir bekommen 1. Das ist es, worauf diese Erklärung hinweisen soll.
Eine Zeichenfolge hat eine bestimmte Länge in Bytes. Die Anzahl der Zeichen in dieser Zeichenfolge entspricht genau dann der Anzahl der Bytes , wenn jedes Zeichen in der Zeichenfolge durch ein einzelnes Byte dargestellt wird. Dies gilt beispielsweise für englische Buchstaben. Für Darstellungen (d. H. Codierungen), die mehr als ein Byte zum Darstellen einiger oder aller Zeichen verwenden, ist die Anzahl der Zeichen geringer als die Anzahl der Bytes *. Es ist beispielsweise nicht möglich, alle möglichen chinesischen Zeichen mit einem Byte darzustellen.
So wird iconv_strlen bei einer Codierung versuchen, die Anzahl der Zeichen in der Zeichenfolge zu zählen. Die Bytefolge ist die Reihenfolge der Bytes in der Zeichenfolge. Für eine Zeichenfolge, die Chinesisch enthält und die UTF8-Codierung verwendet, verfügen Sie beispielsweise über eine 20-Byte-Zeichenfolge mit 14 Zeichen.
* Es könnte mehr sein, wenn ein Zeichen durch weniger als ein Byte repräsentiert wird.
iconv_strlen()
zählt das Auftreten von Zeichen in der gegebenen Bytefolgestr
auf der Grundlage des angegebenen Zeichensatzes, dessen Ergebnis nicht unbedingt mit der Länge der Zeichenfolge in Byte identisch ist.
Übersetzungen:
byte sequence
: ein anderes Wort für string , das eine Bytefolge (1 Byte = 8 Bit) ist, z. B .: 01011010 00011001 01101011
. Bytefolgen repräsentieren Zeichen wie A
, B
, C
etc. character set
: a.k.a.. Codierung , gibt an, wie ein Byte einem Zeichen zugeordnet wird; z.B. 01000001
repräsentiert A
im ASCII-Zeichensatz . not necessarily identical to the length […] in byte
: Im ASCII-Zeichensatz steht ein Byte für genau ein Zeichen. Dies ist nicht bei allen Zeichensätzen der Fall; in einigen zwei, drei oder mehr Bytes werden verwendet, um ein Zeichen darzustellen. Dies liegt daran, dass ein Byte nur 256 verschiedene Werte enthalten kann und einige Sprachen mit mehr als 256 Zeichen (wie Chinesisch und Japanisch) geschrieben werden. Unicode versucht sogar, alle Zeichen aller menschlichen Sprachen in einem einzigen Zeichensatz abzubilden, was viel mehr als ein Byte pro Zeichen erfordert. Zusammenfassend:
iconv_strlen()
zählt die Zeichen in der angegebenen Zeichenfolge unter Berücksichtigung des Zeichensatzes. Daher ist die Anzahl der Zeichen möglicherweise nicht gleich der Anzahl der Bytes.