Brauche Hilfe Bei Php+zeichenkodierung MySQL-Zugriffscode durchschauen
#1
geschrieben 02. August 2007 - 15:39
Mein erster Ansatz war, den Code des Gästebuchs durchzugehen, ob ich da irgendwas zur Kodierung finde. Allerdings blick ich PHP nicht gut genug, um das hinzubekommen. Deshalb: hätt jemand etwas Zeit und Erbarmen, um den Gästebuchcode durchzuschauen?
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
Anzeige
#2
geschrieben 02. August 2007 - 15:52
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
#3
geschrieben 02. August 2007 - 16:02
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#4
geschrieben 02. August 2007 - 16:12
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
#5 _scy89_
geschrieben 03. August 2007 - 00:02
Naja ohne deinen Quelltext zu kennen, kann ich dir aber folgendes sagen:
Umlaute werden nur von ISO-8859-1 im Klartext erkennt, d.h du hast mehrere Möglichkeiten:
- Du kannst die Entity benutzen ( z.B. "ü" für "ü" )
- Da UTF-8 Umlaute in 2 Byte umwandelt kannst du ein "ü" nicht ohne weiteres im Klartext nutzen, du müsstest es dan als 2 Bytes schreiben. Bei dem ü wären es z.B. die beiden Bytes HEX(C3 BC).
- Du kodierst einfach in ISO-8859-1 dann kannst du ohne weiteres Umlaute nutzem
#6
geschrieben 03. August 2007 - 00:09
Die Sache ist die. Das MySQL-Admininterface vom Hoster läuft mit UTF-8 und dort kommen alle Umlaute klar rüber. Also irgendwas machen die da anderes, als das GB.
Entities nutzen wär ne nette Sache, ich weiss aber nicht, wie ich das GB dahingehend modifiziere, dass es die Umlaute als Entities abspeichert. Bzw hatte ich zwar mal sowas, dann hats aber auch alle HTML-Tags aus der DB beim Auslesen in blanken Text umgewandelt. Statt Smileys und Links standen dann eckige Klammern und URLs da.
Dieser Beitrag wurde von Kirill bearbeitet: 03. August 2007 - 00:10
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#7 _scy89_
geschrieben 03. August 2007 - 00:51
Das wandelt vermutlich die Umlaute passend um, allerdings nur bei der Ausgabe, nicht beim Einlesen, denn sonst würden sie bei dir auch korrekt angezeigt. Dein Problem ist jetzt das dein Gästebuch bei Ausgabe den Text so ausgibt, wie es ihn aus der DB liest, unverändert.
Z.B. hier (Z. 520-524)
echo " <td class=\"gbtable1\">\n"; echo " <div class=\"mainname\">$db[name]</div><br>\n"; echo " <div class=\"smallleft\">$location<br></div>\n"; echo " <br>$icq $http $email $ip $browser\n"; echo " </td>\n";
$location enthält die Herkunftsinformationen, die hier initialisiert werden(Z.510)
$location = "$gb_location<br>$db[location]<br>";
$db[location] enthält die Informationen die direkt aus der Datenbank gewonnen werden, wie man hier sieht(Z. 476):
while ($db = mysql_fetch_array($result)) {
Man könnte theorethisch gleich am Anfang alles aus der DB abfangen und die Umlaute ersetzen.
Allerdings verstehe ich nicht warum du für deine Seite unbedingt eine UTF-8 Kodierung verwenden willst. Wenn du einfach eine ISO-8859-1 Kodierung verwendest hat sich das Problem von selber erledigt ohne Eingriff in den PHP Code des Gästebuches.
#8
geschrieben 03. August 2007 - 00:52
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#9 _scy89_
geschrieben 03. August 2007 - 01:07
#10
geschrieben 03. August 2007 - 01:09
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#11 _scy89_
geschrieben 03. August 2007 - 01:28
<?php function umlaute($input) { $a_search = array ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß'); $a_replace = array ('auml', 'ouml;', 'uuml;', 'Auml;', 'Ouml;', 'Uuml;', 'szlig;'); $str = str_replace($a_search, $a_replace, $input); return $str; } ?>
Vor die "auml", "ouml" usw musst du immer noch ein & setzten, das geht hier leider net weil sie sonst als ä, ö usw angezeigt werden
Ansonsten kann man noch mit regulären Ausdrücken arbeiten. Dazu kannst du dir dieses Tut ansehen wenn du nicht weißt was das ist: Klick
Dieser Beitrag wurde von scy89 bearbeitet: 03. August 2007 - 01:41
#12
geschrieben 03. August 2007 - 01:52
<?php function umlaute($input) { $a_search = array ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß'); $a_replace = array ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß'); $str = str_replace($a_search, $a_replace, $input); return $str; } ?>
Dieser Beitrag wurde von Gitarremann bearbeitet: 03. August 2007 - 01:59
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
#13 _scy89_
geschrieben 03. August 2007 - 10:51
Naja is ja egal, dann benutz ich die Vorschau Funktion eben net mehr
#14
geschrieben 03. August 2007 - 14:55
Dieser Beitrag wurde von Kirill bearbeitet: 03. August 2007 - 14:55
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#15 _scy89_
geschrieben 03. August 2007 - 15:07
- ← [php] Klassen - Var_deklaration -> Header
- Skript/Web-Programmierung
- Problem: Flash Applet überdeckt Dropdown Menü →