WinFuture-Forum.de: Brauche Hilfe Bei Php+zeichenkodierung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Brauche Hilfe Bei Php+zeichenkodierung MySQL-Zugriffscode durchschauen


#1 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 02. August 2007 - 15:39

In meinem Gästebuch werden, seit ich im Header UTF-8 verwende, Rechtecke statt Umlaute angezeigt. Ich hab keine Lust, auf ISO irgendwas zurückzugehen. Per PHP-SQL-Adminoberfläche vom Hoster reingeshaut, sind die Umlaute alle da.

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?
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

Anzeige



#2 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 02. August 2007 - 15:52

Ähm - wo?

Angehängte Miniaturbilder

  • Angehängtes Bild: screenshot_gb.png

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#3 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 02. August 2007 - 16:02

Da
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#4 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 02. August 2007 - 16:12

Ach da.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#5 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 00:02

Wenn sich jemand deinen php code durchgucken soll, müsstest du ihn dann nicht hier posten? Oder hab ich was falschverstanden?

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. "&uuml" 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

0

#6 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 03. August 2007 - 00:09

Bevor ich den Quelltext poste, wollt ich warten, bis sich jemand bereit erklärt.

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

Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#7 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 00:51

Zu dem Host-Interface:
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.
0

#8 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 03. August 2007 - 00:52

Weil ich mit ISO Probleme mit dem RSS-Script bekomm, weil das wiederum von Unicode ausgeht.
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#9 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 01:07

Tja dann kommst du wohl nicht drum herum entweder beim Einlesen oder beim Ausgeben die Umlaute per PHP-Skript in 2 Bytes umzuwandeln oder du gibst statt den Umlauten die Entities aus, was gebräuchlicher ist.
0

#10 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 03. August 2007 - 01:09

Würde ich sehr gern machen. Kannst du mir sagen, wie es geht? Wie eingangs erwähnt bin ich, was PHP angeht, nicht wirklich drin.
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#11 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 01:28

Ich definiere "nicht so bewandert" mal so, dass du die Grundlagen beherrscht: Also ich habe hier mal eine Funktion geschrieben, die dein Problem beheben könnte, allerdings ist sie nicht getestet, weil es halb 3 ist und ich jetzt lust auf Schlafen habe :imao: Du kannst sie j bei dir einbauen und testen wenn du willst und gerne auch noch Fragen stellen, allerdings werde ich sie erst morgen beantworten:)

<?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 :wink:


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

0

#12 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 03. August 2007 - 01:52

Doch als Quelltext müßte das gehen.

<?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;
}
?>

Dieser Beitrag wurde von Gitarremann bearbeitet: 03. August 2007 - 01:59

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#13 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 10:51

Mhhh sieht so aus. Dabei bin ich mir fast sicher das er mir das bei Vorschau falsch angezeigt hat...

Naja is ja egal, dann benutz ich die Vorschau Funktion eben net mehr :rolleyes:
0

#14 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 03. August 2007 - 14:55

Cool, danke :smokin:

Dieser Beitrag wurde von Kirill bearbeitet: 03. August 2007 - 14:55

Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#15 _scy89_

  • Gruppe: Gäste

geschrieben 03. August 2007 - 15:07

Für sowas gibts ja Foren :smokin: Ich helfe immer wieder gerne
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0