Seite 1 von 2

Kollationen - Ich kollabiere ;)

Verfasst: 30.09.2006 00:22
von reidda
Hallo.

So langsam aber sicher bin ich am verzweifeln! Ich habe schon Stunden mit Google verbracht, aber nie etwas passendes gefunden. Das Problem:

Ich habe einen Linux-Server, auf dem MySQL 5.0.22 rennt. Dort ist leider als Standart-Kollation UTF-8 angegeben. Wenn ich nun das phpBB 2.0.21 deutsch installiere, werden bei neuen Beiträgen, bzw. Themen ab dem ersten Umlaut die Texte abgeschnitten. Um es verständlicher zu machen ein Beispiel:

Eingetippter Text:
Heute abend war ich mit Jörg im Kino.
Nach dem Speichern ausgegebener Text:
Heute abend war ich mit J
Das ganze wird auch in der Datenbank nicht gespeichert. Wenn ich das ganze - testweise - in der DB manuell nachtrage, werden nur wirre Zeichen ausgegeben (verständlich).
Wie kann ich denn bei der phpBB Installationsroutine die Kollation ändern, oder ist es möglich - wie bei meinem selbst programmierten Blog - Sonderzeichen als HTML-Codes zu speichern (also z.B. für ä ein ä)

Bitte helft mir. Danke!

Verfasst: 30.09.2006 00:40
von PhilippK
Wenn du keine Möglichkeit hast, das in der php.ini oder der my.ini anzupassen, dann versuche folgendes: gehe in die ./db/mysql4.php, suche dort alle Vorkommen von

Code: Alles auswählen

mysql_
und ersetze sie duch

Code: Alles auswählen

mysqli_
(Achtung: das kommt sowohl in Kleinbuchstaben als auch in Großbuchstaben vor. Die Ersetzung jeweils analog in klein oder groß machen)
Dann suchst du

Code: Alles auswählen

				$this->dbname = $database;
und fügst davor ein

Code: Alles auswählen

				@mysqli_set_charset($this->db_connect_id, 'latin1');
Nicht getestet - daher die mysql4.php vorher sichern.

Gruß, Philipp

Verfasst: 30.09.2006 10:06
von Miriam
Oder direkt für das phpBB kannst Du auch das probieren:
finde in der functions_post.php

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
ersetze gegen:

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#', '#ä#', '#Ä#', '#ö#', '#Ö#', '#ü#', '#Ü#', '#ß#' );
$html_entities_replace = array('&', '<', '>', '"', '&auml;', '&Auml;', '&ouml;', '&Ouml;', '&uuml;', '&Uuml;', '&szlig;');

Verfasst: 30.09.2006 10:41
von reidda
Danke! Ich werde erst mal die Lösung von PhilippK probieren. Denn damit wären wenigstens auch bei anderen Scripts die Probleme gelöst.
Vielen Dank. Und wenn es Fragen gibt, melde ich mich einfach hier nochmal.

Verfasst: 01.10.2006 18:40
von reidda
@Miriam: Habe nun deine Lösung genommen.
Jetzt wäre es aber gut, wenn man per PN auch Umlaute schreiben könnte. Wo kann ich das anpassen?

Verfasst: 01.10.2006 19:02
von Miriam
reidda hat geschrieben:Wo kann ich das anpassen?
Rate mal ......

finde in privmsg.php

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
ersetze gegen:

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#', '#ä#', '#Ä#', '#ö#', '#Ö#', '#ü#', '#Ü#', '#ß#' );
$html_entities_replace = array('&', '<', '>', '"', '&auml;', '&Auml;', '&ouml;', '&Ouml;', '&uuml;', '&Uuml;', '&szlig;');

Verfasst: 01.10.2006 22:35
von PhilippK
Na ja, die Lösung wird dann scheitern, wenn einer ein €-Zeichen verwendet, einen französischen Begriff reinschreibt usw.
Besonders elegant ist die nicht gerade...

Gruß, Philipp

Verfasst: 01.10.2006 22:49
von Mahony
Hallo
Du könntest es allerdings auch mal mit diesem Script hier versuchen >>>convert mysql4 collation<<<
Beschreibung:
Mit diesem Script lässt sich die Collation für die gesamte MySQL-4-Datenbank von einem Wert in einen anderen ändern. Bitte die beiliegende Liesmich-Datei beachten.


Grüße: Mahony

Verfasst: 02.10.2006 00:25
von PhilippK
Mahony hat geschrieben:Mit diesem Script lässt sich die Collation für die gesamte MySQL-4-Datenbank von einem Wert in einen anderen ändern.
Das wird auch nicht helfen - relevant ist die Collation, die für die Verbindung definiert wurde - siehe auch http://dev.mysql.com/doc/refman/5.0/en/ ... ction.html

Gruß, Philipp

Verfasst: 02.10.2006 15:57
von reidda
PhilippK hat geschrieben:Na ja, die Lösung wird dann scheitern, wenn einer ein €-Zeichen verwendet, einen französischen Begriff reinschreibt usw.
Besonders elegant ist die nicht gerade...

Gruß, Philipp
Was schlägst du dann vor? Deine Lösung hat einen Fehelr produziert...