Gibt es eine Möglichkeit, die Mindestanzahl an Bytes, die ein Zeichen in einer bestimmten Codierung benötigt, sicher zu bestimmen? Wie eine der von der mbstring-Erweiterung unterstützten Codierungen. Der Wert ist 1 für UTF-8, 2 für UTF-16 usw.Wie kann man die Mindestanzahl von Bytes bestimmen, die ein Zeichen benötigt?
Ich möchte nicht die Länge einer bestimmten Zeichenfolge oder eines Zeichens erhalten.
Ich möchte die minimale Zeichengröße wissen, die von einer gegebenen Kodierung unterstützt wird, entsprechend ihrer Spezifikation.
Ich verwende derzeit diesen Code:
<?php
function flawed_detection($encoding)
{
// I use 'a' in the hope that this char need the least number of bytes in all the supported encodings
return strlen(mb_convert_encoding('a', $encoding, 'UTF-8'));
}
foreach (mb_list_encodings() as $encoding) {
echo "$encoding: ", flawed_detection($encoding), "\n";
}
Teilausgang:
...
UTF-16LE: 2
UTF-8: 1
UTF-7: 1
UTF7-IMAP: 1
ASCII: 1
EUC-JP: 1
...
Aber ich bin nicht sicher, ob das "richtige" Zeichen zu verwenden. Wenn es jemals einen gibt.
edit: Ich habe den Brute-Force-Ansatz mit allen Zeichen von 0 bis U + 10FFFF in allen Kodierungen getestet, und die Ergebnisse sind genau die gleichen wie mit meiner finally_not_so_flawed_detection-Funktion (mit dem 'a' char oder mit space): p
Mögliches Duplikat von [Größe der Zeichenfolge in Bytes in PHP] (http://stackoverflow.com/questions/7568949/measure-string-size-in-bytes-in-php) –
Warum? Was ist das Ziel hier? Haben Sie einen geschäftlichen oder technischen Grund, UTF-8 nicht auf der ganzen Linie zu verwenden? –
Was warum? Dies ist eine allgemeine Frage: p Und ich verwende UTF-8 in meinem Projekt, aber ich muss einige Zeichenfolgen in Binärdateien dekodieren. – Ayell