Sonderzeichen Laenge nach POST veraendert
Paragoge
- php
0 Tom0 Dieter Raber0 hotti
charset ist UTF-8
Die Variable die per POST geschickt wird lautet: $items = "toutes les entrées";
vor dem POST : "toutes les entrées" (per var_dump : 23 Zeichen)
Nach dem POST : "toutes les entrées" (per var_dump : 19 Zeichen (warum nicht 18?))
logischerweise werden die strings bei einem Vergleich als verschieden gewertet. In einem if brauche ich aber zu bestàtigen, dass sie dieselben sind!
Ich wäre sehr dankbar für Hinweise!
Hello,
charset ist UTF-8
Die Variable die per POST geschickt wird lautet: $items = "toutes les entrées";vor dem POST : "toutes les entrées" (per var_dump : 23 Zeichen)
Nach dem POST : "toutes les entrées" (per var_dump : 19 Zeichen (warum nicht 18?))
Nicht "Zeichen" sondern "Bytes" werden von Vardump gezählt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Paragoge,
In UTF-8 werden für die ersten 128 Zeichen ein Byte für die Charactere 128-2047 zwei Byte benötigt. e (101) hat also ein Byte, é (233) zwei Bytes.
Das ergibt fuer 'toutes les entrées':
17 'einfache' + 1 'doppelter' = 19 Bytes.
Irgendetwas in deinem Code wandelt jetzt das é in é um, was zusammen 23 Bytes gibt. Du müsstest den Vergleich also vor der Umwandlung von é nach é machen, oder besser noch, auf die Umwandlung ganz verzichten, weil diese in UTF-8 überflüssig ist.
Gruss
Dieter
Herzlichen Dank! Das sind klare Worte mit urwichtigen Informations drin!
Bis jetzt versuchte ich mit if($value_vor_dem_POST == $value_nach_dem_POST) die zwei Variablen zu vergleichen...
Ich werde versuchen wie von dir empfohlen...
Danke
"Irgendetwas in deinem Code wandelt jetzt das é in é um"
Anhand der neuen Erkenntnissen, kann das Problem genauer beschrieben werden.
Die Variable, vor dem Schicken hat 23 bytes, weil so geschrieben : "toutes les entrée"
Nach dem Abschicken per POST werden die Zeichen é in é umgewandelt und das ergibt 17 + 2 = 19 bytes
Das habe ich, dank deiner Anweisungen, verstanden.
Ich muss für meinen Script diese zwei Variables in diesem zwei verschiedenen Zustände vergleichen (also nicht vor dem Abschicken) und hier weiss ich nicht Bescheid!
charset ist UTF-8
Die Variable die per POST geschickt wird lautet: $items = "toutes les entrées";
Nö. UTF-8 wäre "toutes les entrées"
UTF-8 codiert hat é die Länge von 2 byte. Andere Zeichen in UTF-8 können jedoch auch mal 3 byte lang sein, der € hat z.B. 3 byte.
Hotti