Wie ersetzen/entfernen 4(+)-byte-Zeichen aus UTF-8-Strings in PHP?

Wie es scheint, MySQL nicht unterstützt Charaktere mit mehr als 3 bytes in seiner Standard-UTF-8-Zeichensatz.

So, in PHP, wie kann ich loszuwerden, alle 4 (und mehr)-byte-Zeichen in einer Zeichenfolge und ersetzt Sie mit etwas, wie von einigen anderen Zeichen?

  • Sind Sie sicher, dass die Daten, die Sie gehen, um mit zu betreiben, wird immer die Zeichen enthalten, die nicht passen in die mysql-3-byte-utf8?
  • Sind Sie sicher, dass es noch ähnliche Charaktere? 3 bytes geben Sie das ganze Basic Multilingual Plane; wenn Ihr brauchen die viel seltenere Zeichen über, betrachten eine andere Unicode-Kodierung (z.B. utf-16).
  • Das problem ist, ich möchte vermeiden, die anderen, weil MySQL kürzt Texte an diesem Punkt, dass, wenn jemand stellt eines dieser Sonderzeichen drin.
  • Hier ist das ticket: fluxbb.org/development/core/tickets/485
  • Tut mir Leid, aber das ist sehr viel wie zu sagen: "Nun, ß und ž und passt nicht in ASCII, also lasst Sie in ss und z und c; Verlust von Sinn und grammatikalische Richtigkeit? I don ' T care."
  • Ich dachte MySQL hatte, wurde dieser Fehler behoben?
  • Vielleicht in neueren Versionen...
  • MySQL unterstützt diese Zeichen, die jetzt durch die utf8mb4 charset.
  • wenn meine Antwort unten ist ok, bitte klicken Sie auf gray 'check' auf der linken Seite (unten Punkte)

InformationsquelleAutor Franz | 2011-12-13
Schreibe einen Kommentar