Mysql
 sql >> Datenbank >  >> RDS >> Mysql

UTF8-Workflow PHP, MySQL zusammengefasst

  • mb_internal_encoding('UTF-8') macht nichts von selbst, es setzt nur den Standard-Encoding-Parameter für jeden mb_ Funktion. Wenn Sie kein mb_ verwenden Funktion, es macht keinen Unterschied. Wenn dies der Fall ist, ist es sinnvoll, es so einzustellen, dass Sie die $encoding nicht übergeben müssen Parameter jedes Mal individuell.
  • IMO mb_detect_encoding ist meistens nutzlos, da es grundsätzlich unmöglich ist, die Codierung von unbekanntem Text genau zu erkennen. Sie sollten entweder wissen, in welcher Codierung ein Text-Blob vorliegt, weil Sie eine Spezifikation dazu haben, oder Sie müssen entsprechende Metadaten wie Header oder Meta-Tags parsen, in denen die Codierung angegeben ist.
  • Mit mb_check_encoding Es reicht normalerweise aus, zu überprüfen, ob ein Textklecks in der Codierung gültig ist, in der Sie ihn erwarten. Ist dies nicht der Fall, verwerfen Sie es und geben Sie einen entsprechenden Fehler aus.
  • Betrifft:

    Wenn Sie Strings manipulieren, die Multibyte-Zeichen enthalten, dann ja, Sie müssen den mb_ verwenden Funktionen, um falsche Ergebnisse zu vermeiden. Die Kern-String-Funktionen arbeiten nur auf Byte-Ebene, nicht auf Zeichen-Ebene, was Sie normalerweise wünschen, wenn Sie mit Strings arbeiten.

  • utf8_general_ci vs. utf8_bin macht nur beim Sortieren einen Unterschied , d. h. Sortieren und Vergleichen von Zeichenketten. Mit utf8_bin Daten werden binär behandelt, d.h. nur identische Daten sind identisch. Mit utf8_general_ci eine gewisse Logik wird angewendet, z. "é" sortiert zusammen mit "e" und Großbuchstaben werden als Kleinbuchstaben angesehen.