Der Martin: Prüfungen ob ASCII

Beitrag lesen

Hi,

Also was ich will: ASCII Zeichen als 1 zählen, den Rest als 2.

dann hast du ein systematisches Problem. Zeichen mit Codes ab U+0080 werden in Unicode nicht pauschal mit zwei, sondern mit bis zu vier Bytes codiert.

Nebensächlich ist das Problem: Der User soll *genau* 200 Zeichen eingeben können. Das wird mit PHP serverseitig mit strlen geprüft und dann in mySQL5 in ein VARCHAR(200) geschrieben.

Also 200 Zeichen. Warum klammerst du dich dann so an die 200 Bytes? Ich gehe davon aus, dass die Codierung dieses Feldes in der Datenbank ebenfalls UTF-8 ist.

Dabei handelt es sich aber um UTF8 Kodierung wo Umlaute 2 Bytes benötigen.

Und andere Sonderzeichen noch mehr. Na und? Trotzdem gilt es als je ein Zeichen.

D.h. serverseitig wird öäü als 6 gezählt, ...

Aber nur von PHP. Abgesehen davon: PHP kennt auch mbstrlen(), das zählt tatsächlich Zeichen und nicht einfach nur Bytes.

Jetzt klar?

Ja. Nur nicht, warum du ein Problem siehst.

So long,
 Martin

--
Keine Sorge, wir finden für jede Lösung ein Problem.