Charset in HTML-Dateien beim Speichern serverabhängig?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Lucas1510
Mitglied
Beiträge: 823
Registriert: 04.07.2003 13:59

Charset in HTML-Dateien beim Speichern serverabhängig?

Beitrag von Lucas1510 »

Hallo,

Ich habe folgendes Problem: Texte, die ÖöÄäÜü... enthalten und in der DB gespeichert werden, sehen dort völlig verhunzt aus.

Beispiel:
  • Aus Kröte wird Kröte
  • Aus Ärger wird Ärger
  • Aus Tücken wird Tücken
  • Aus daß ich jetzt schreie wird daß ich jetzt schreie
So sieht´s aus, wenn ich einen Beitrag meines Blogs in der mySQL-DB meines Providers betrachte.

Erstelle ich einen Text, der auf meiner Provider-DB gespeichert ist, 1:1 auf meinem lokalen Webserver nach und speichere den in meiner lokalen DB, wird er nicht verhunzt.

Die php/html-Dateien, die diese Texte abrufen, haben zur Festlegung des Zeichensatzes alle folgenden Code intus:

Code: Alles auswählen

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Aber der ist zum Abspeichern eines neuen Beitrages ja eigentlich völligstens uninteressant. Woran liegt´s denn dann?

Viele Grüße,

Lucas
"Nein, Schatz, Du bist nicht dumm. Du bist sogar sehr hübsch!"
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

Woran das liegt kann ich dir jetzt net genau sagen, aber ich kann dir sagen wie du dies verhinderst:

Code: Alles auswählen

htmlspecialchars()
Als Argument übergibst du einen Text oder einfach die Variable die diesen Text hat, danach speicherst du dies in die DB und alles bleibt sauber ;)


Mfg
MrMind
Selbst ist der Coder
Coder unter Linux
Benutzeravatar
Lucas1510
Mitglied
Beiträge: 823
Registriert: 04.07.2003 13:59

Beitrag von Lucas1510 »

ok, habe mal nach htmlspecialchars() gegoogelt und dabei folgendes gefunden:

Code: Alles auswählen

<?PHP
$string = "' \" & < >"; echo htmlspecialchars($string, ENT_QOUTES);
?>
Quelle

Habe aber nicht so ganz verstanden, wie ich damit umgehen muss. Soll/Kann ich diese Zeile(n) einfach in eine HTML/PHP-Datei einbauen? Und muss ich dann die zu erseztenden Zeichen alle in "..." angeben und die werden dann umgewandelt?

Die Blog-Software, die ich benutze, setzt sich, wie phpBB, aus Header-, Footer- und Mainpart zusammen. Müsste ich dann den oben angegebenen Befehl "teilen"?

Also im Kopf z.B. der Teil:

Code: Alles auswählen

<?PHP
$string = "
und im Footer der:

Code: Alles auswählen

"; echo htmlspecialchars($string, ENT_QOUTES);
?>
Wahrscheinlich ist das jetzt riesen Bockmist, was ich hier schreibe, aber ich habe echt so gar keine Ahnung, wie ich den Code nun nutzen kann/soll, sorry :(
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Lucas1510 hat geschrieben:ok, habe mal nach htmlspecialchars() gegoogelt und dabei folgendes gefunden:

<?PHP
$string = "' " & < >"; echo htmlspecialchars($string, ENT_QOUTES);
?>
Sieh dir mal die fett markierten Teile an. Das Semikolen fungiert als Delimeter bzw. es lässt den Interpreter erkennen wann ein Befehl endet. Dies ist nicht in allen Sprachen erforderlich aber zumindest PHP erwartet dies ausdrücklich.....

Dem zu Folge hat ersteres mit letzterem überhaupt nichts zu tun.....Der einzige Zweck ist wohl aufzuzeigen was die Funktion aus diesen Zeichen macht aus & wird & z.B.

Es hilft dir mehr einfach mal im Manual nachzuschauen was diese Function bewirkt, was für Parameter diese erwartet....Vor allem die User Notes erklären anhand eines Beispieles die Funktionsweise besser als das ganze blabla......

Bei der Verwendung eines Codes aus dem Internet besteht die Gefahr das der Code schlecht, sicherheitskritisch oder negative Einflüsse ausübt.....

http://de.php.net/manual/de/function.ht ... lchars.php

Zu deiner Frage du musst diese Zeichen nicht angeben.....
PHP Manual hat geschrieben: string htmlspecialchars ( string string [, int quote_style [, string charset]])
Die Function erwarten zwingend einen String
erwartet optional eine Var die Integer sein muss (Umgebungsvariablen von PHP Werte schon vordeklariert )
Und erwartet optional den zu verwendenden Zeichensatz....

Alle optionalen Funktionsparameter sind damit keine Pflicht......
int quote_style erlaubt es zu entscheiden ob " oder ' auch umgewandelt werden sollen.....

Da sollte auch erwähnt werden:
PHP Manual hat geschrieben: string htmlentities ( string string [, int quote_style [, string charset]])

Diese Funktion ist mit htmlspecialchars() identisch, ausser dass alle Zeichen, die HTML-Code-Entsprechungen haben, in diese Codes umgewandelt werden.
Würde dir daher sofern keine spezielle Gründe für htmlspecialchars vorliegen zu htmlentities raten....
Benutzeravatar
Lucas1510
Mitglied
Beiträge: 823
Registriert: 04.07.2003 13:59

Beitrag von Lucas1510 »

Würde dir daher sofern keine spezielle Gründe für htmlspecialchars vorliegen zu htmlentities raten....
Habe mir gerade mal den Quelltext des Blogs genauer angeschaut und gesehen, daß dort htmlentities() benutzt wird. Habe sämtliche htmlentities() durch htmlspecialchars() ersetzt, aber nichts zu machen, die Postings werden in der DB immer noch verstümmelt gespeichert :(
Testbeitrag mit ÄäÖöÜüß

Lebensgefährtin

Ich sagte, daß Du der Grund bist

Überraschungseier

Österreich

Ärger

Kröte

Mürbeteig

Wähler
Na, macht nix, dann werde ich mal weiterschauen,

danke für Eure Hilfe :grin:

Viele Grüße,

Lucas
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Poste die unmittelbaren Werte bzw. Code der zum SQL Statment führt......

P.S.: Du meinst es andersrum :wink:
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

Mh auch mal überprüft ob es evtl. an einer Browsereinstellung liegen kann???

Ich weiß zum Beispiel, wenn ich mit Firefox früher einen Beitrag geschrieben hatte und mit dem IE diesen dann betrachtet habe, auch derartige Sonderzeichen gesehen. Doch mit dem Firefox war wieder alles ok.

Mfg
MrMind
Selbst ist der Coder
Coder unter Linux
Antworten

Zurück zu „Coding & Technik“