mb_internal_encoding('UTF-8')
macht nichts von selbst, es setzt nur den Standard-Encoding-Parameter für jedenmb_
Funktion. Wenn Sie keinmb_
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. Mitutf8_bin
Daten werden binär behandelt, d.h. nur identische Daten sind identisch. Mitutf8_general_ci
eine gewisse Logik wird angewendet, z. "é" sortiert zusammen mit "e" und Großbuchstaben werden als Kleinbuchstaben angesehen.