Andi123: MySQL: durchgehendes UTF-8. Nur wie und wo?

Beitrag lesen

Hallo,

seit kurzem (wahrscheinlich wurden bisher keine solchen 'Sonderzeichen' wie ein ć eingegeben?) erhalte ich bei Einträgen aus einem Formular auf meiner Webseite in meine Datenbank den MySQL-Fehler Incorrect string value: '\xC4\x87ek\x0D\x0A...' for column 'lineup' (an der Stelle soll ein 'Vlćek' eingegeben werden).

Da war es für mich an der Zeit, mich mal mit der aktuell bestehenden Kodierung im einzelnen zu beschäftigen.

Was ich habe: PHP-Skript ist im Editor auf UTF8 gestellt

Ausgabe der Webseite: UTF-8.

Eine seit 13 Jahren bestehende Datenbank mit den Werten wie folgt:

  • collations.character_set_name: latin1 (betrifft alle Tabellen in der DB)
  • collation_connection: utf8_general_ci
  • collation_database: latin1_swedish_ci
  • collation_server: latin1_swedish_ci
  • character_set_client: utf8
  • character_set_connection: utf8
  • character_set_database: latin1
  • character_set_filesystem: binary
  • character_set_results: utf8
  • character_set_server: latin1
  • character_set_system: utf8

Meine Fragen:

  • Ich las im Netz, dass es sein kann, dass man von utf8 auf utf8mb4 umschalten solle, da man dann auch die Zeichen aus höheren Unicode-Regionen verwenden kann. Ist das anzuraten und eine Absicherung für die Zukunft? Oder gibt es da allgemeingültigere Möglichkeiten, die schon jetzt ein noch größeres Charset abbilden? utf8_general_ci ?

  • Wo muss ich zwingend überall utf8/ utf8mb4/ utf8_general_ci einstellen, damit obige Fehler nicht mehr passieren?

  • Kann ich die bestehenden Datensätze in meinen Tabellen irgendwie konvertieren ?

Vielen Dank Andi