Ich sitze nun seit 2 Tagen dran und bekomme es nicht geordnet 
Also ich habe ein XML Dokument mit UTF-8 Daten. Dieses XML Dokument lade ich (per PHP) und schreibe die Daten in eine Datenbank (per PHP).
Problem ist nun, dass ich die Daten nur in die Datenbank bekomme, wenn ich zuvor "SET NAMES latin1" als Query ausführe oder es direkt beim init-command in meiner Konfiguration eintrage. Wieso nur dann? Ich habe einen UNIQUE KEY auf eine Spalte in die ich einmal "Fayt" und einmal "Fâyt" eintragen möchte. Dummerweise ist "a" = "â", daher auch diese Integrity constraint violation.
Jetzt ist für mich die Frage, was genau der Fehler ist. Ist die MySQL Datenbank nicht richtig konfiguriert, dass die kein UTF-8 kann, oder sind es evtl. die Daten aus der XML Datei? Die Daten aus der XML Datei, welche ich in die Datenbank schreiben will, habe ich in mb_detect_string() geschoben und bekam "UTF-8" bei Begriffen mit Umlauten.
Hiermit funktionierts nicht (SET NAMES utf
:
Hiermit funktionierts (SET NAMES latin1):
Ich hoffe mir kann da jmd. von euch weiterhelfen, denn ich weiß da in diesem Wirrwarr echt nicht mehr weiter.
P.S.: Sofern die Daten in der XML Datei wirklich UTF-8 sind, möchte ich kein utf8_encode() verwenden und es sollte mit SET NAMES utf8 funktionieren.
Also ich habe ein XML Dokument mit UTF-8 Daten. Dieses XML Dokument lade ich (per PHP) und schreibe die Daten in eine Datenbank (per PHP).
Problem ist nun, dass ich die Daten nur in die Datenbank bekomme, wenn ich zuvor "SET NAMES latin1" als Query ausführe oder es direkt beim init-command in meiner Konfiguration eintrage. Wieso nur dann? Ich habe einen UNIQUE KEY auf eine Spalte in die ich einmal "Fayt" und einmal "Fâyt" eintragen möchte. Dummerweise ist "a" = "â", daher auch diese Integrity constraint violation.
Jetzt ist für mich die Frage, was genau der Fehler ist. Ist die MySQL Datenbank nicht richtig konfiguriert, dass die kein UTF-8 kann, oder sind es evtl. die Daten aus der XML Datei? Die Daten aus der XML Datei, welche ich in die Datenbank schreiben will, habe ich in mb_detect_string() geschoben und bekam "UTF-8" bei Begriffen mit Umlauten.
Hiermit funktionierts nicht (SET NAMES utf
Code:
# SHOW VARIABLES LIKE "%char%"; character_set_client=utf8 character_set_connection=utf8 character_set_database=utf8 character_set_filesystem=binary character_set_results=utf8 character_set_serve=utf8 character_set_system=utf8 character_sets_dir=/usr/share/mysql/charsets/ # SELECT VARIABLES LIKE "%collation%"; collation_connection=utf8_general_ci collation_database=utf8_unicode_ci collation_server=utf8_unicode_ci # SELECT @@collation_connection; @@collation_connection=utf8_general_ci
Code:
# SHOW VARIABLES LIKE "%char%"; character_set_client=latin1 character_set_connection=latin1 character_set_database=utf8 character_set_filesystem=binary character_set_results=latin1 character_set_server=utf8 character_set_system=utf8 character_sets_dir=/usr/share/mysql/charsets/ # SHOW VARIABLES LIKE "%collation%"; collation_connection=latin1_swedish_ci collation_database=utf8_unicode_ci collation_server=utf8_unicode_ci # SELECT @@collation_connection; @@collation_connection=latin1_swedish_ci
P.S.: Sofern die Daten in der XML Datei wirklich UTF-8 sind, möchte ich kein utf8_encode() verwenden und es sollte mit SET NAMES utf8 funktionieren.


Kommentar