Seite 1 von 1
Strings mit Umlauten in DB schreiben - General Error
Verfasst: 19.09.2007 23:21
von Ghost Walker
Hallo,
einige User drängen mich meinen Mod an die derzeitige phpBB3 RC version anzupassen. Beim Ausführen des Update Skripts, der ein paar Tabellen erstellt und dort Daten speichert, wird ein "General Error" Fehler mit folgendem Inhalt ausgegeben:
Code: Alles auswählen
SQL ERROR [mysql4]
Incorrent string value: '\xFCberge...' for column 'config_value' at row 1 [1366]
SQL
INSERT INTO 'phpbb3_gum_config' VALUES (... und so weiter.......)
Im String sind Umlaute enthalten (in dem Fall ist das Wort da oben "übergeben"), die das Forum wohl irgendwie nicht annehmen will.
Da mich die Zeit drängt, würde ich mich sehr freuen, wenn mir jemand helfen könnte.
Verfasst: 19.09.2007 23:34
von nickvergessen
Ein Fall für den
BugTracker
Verfasst: 19.09.2007 23:48
von Ghost Walker
Das heißt, es könnte ein Bug sein? Ich bin aber doch sicher nicht der erste, der Strings mit Umlauten über $db->sql_query() schreibt?
PS: Muss ich den String erst durch die Funktion $utf8_normalize_nfc() schicken? Ich habe ein array, wie mache ich das? (welche Parameter)
Verfasst: 20.09.2007 07:25
von Dr.Death
Moin,
Dein Installer muss im Format UTF-8 ohne BOM abgespeichert werden, wenn er Umlaute erhält.
Siehe auch --> KB:166
Verfasst: 20.09.2007 12:19
von Ghost Walker
Keine Änderung. Der selbe Fehler, obwohl so gespeichert, wie du es gesagt hast.
Verfasst: 20.09.2007 12:22
von Dr.Death
So, die Glaskugeln sind aus.
Verlinke uns mal die entsprechende php Datei als TXT Datei.
Verfasst: 20.09.2007 12:42
von Ghost Walker
Das wollte ich gerade machen
Hier eine abgespeckte Version:
Edit by Wuerzi: Link auf Userwunsch entfernt.
Verfasst: 20.09.2007 12:50
von Dr.Death
Hm, schau dir mal meinen F1 MOD an.
Genauer das File:
root/install_f1webtipp.php
Dort verwende ich auch diese Technik, muss aber das ganze auf mysql < 4.1.3 und => 4.1.3 testen bevor ich es in die Datenbank schicke ( Binär ablegen oder mit UTF8 Support )
Link -->
F1 WebTipp
Dort findest Du später auch diesen Teil:
Code: Alles auswählen
// Insert all drivers into formel_drivers table
$sql = 'INSERT INTO '.$table_prefix."formel_drivers (driver_id, driver_name, driver_img, driver_team) VALUES
(1, 'Alonso, Fernando', '', 1),
(2, 'De la Rosa, Pedro', '', 1),
(3, 'Paffett, Gary', '', 1),
(4, 'Hamilton, Lewis', '', 1),
(5, 'Kovalainen, Heikki', '', 2),
(6, 'Fisichella, Giancarlo', '', 2),
(7, 'Piquet Jr., Nelson', '', 2),
(8, 'Zonta, Ricardo', '', 2),
(9, 'Räikkönen, Kimi', '', 3),
Der Fahrer "Räikönnen" hat auch Umlaute....und das funktioniert bisher
