Zeichenkodierung Variablenübergabe unterschiedlich

Loveboat

Erfahrenes Mitglied
Hallo zusammen,

ich bin gerade am verzweifeln und weiß nicht weiter.

Ich habe eine Adminseite bei der ich den Inhalt einzelner Seiten in einer SQL-Datenbank speichere. Dies habe ich auch schon zig mal gemacht und hatte nie Probleme, aber jetzt verzweifle ich an der Kodierung der übergebenen Zeichen.

In meinem Formular habe ich ein Eingabefelder, soweit ganz klar. Sobald ich aber die Seite mit dem Inhalt abschicke, dann wird der Inhalt des Editors (FCKEditor) fehlerfrei übergeben, die Inhalte einfacher INPUT-Elemente aber nicht.

Habe mal nen var_dump für beide übergebene Variablen gemacht damit Ihr sehr was ich meine:

var_dump($_REQUEST["FCKeditor1"]);
Code:
string(1412) "Um Ihre Freude am Fahren noch ein wenig zu steigern, k&ouml;nnen Sie Ihren BMW mit vielen sinnvollen Extras erg&auml;nzen: vom mitwachsenden Kinderr&uuml;ckhaltesystem &uuml;ber die Tr&auml;gersysteme von BMW bis hin zu unserer Auswahl an sportlich-sch&ouml;nen Leichtmetallfelgen. Klimaanlagen oder Standheizungen sind bei uns jederzeit nachr&uuml;stbar und erh&ouml;hen Ihren Fahrkomfort.<br />
<br />
<strong>Das bietet Ihnen unser BMW-Shop:</strong>
<ul class="listing">
    <li>Leichtmetallr&auml;der</li>
    <li>Nachr&uuml;stung von Klimaanlagen, Standheizungen und Navigationssystemen</li>
    <li>Original BMW Tr&auml;ger- und Transportsysteme (auch im Mietservice)</li>
    <li>Original BMW Kinderr&uuml;ckhalte-Systeme</li>
    <li>Original BMW-Lacke</li>
    <li>Schneeketten (auch im Mietservice)</li>
    <li>Umfangreiches Tauschteile-Sortiment</li>
    <li>Komplettpreisangebote f&uuml;r &auml;ltere BMW Fahrzeuge</li>
    <li>Mobile Kommunikation</li>
    <li>Nachr&uuml;stung von Freisprechanlagen</li>
    <li>Verkauf und Service von BMW-Bikes</li>
    <li>Gro&szlig;es Angebot an BMW Kinderfahrzeugen</li>
    <li>BMW Miniaturen</li>
    <li>BMW Geschenkboutique</li>
    <li>Geschenk-Gutscheine</li>
    <li>BMW Lifestyle-Accessoires</li>
    <li>und vieles mehr&nbsp;&hellip;</li>
</ul>
<br />
<strong>&hellip;&nbsp;unsere Mitarbeiter beraten Sie gerne!</strong><br />"



Bei diesen Versuchen kommt folgendes raus:

var_dump($_REQUEST["ueberschrift"]);
var_dump(mysql_real_escape_string($_REQUEST["ueberschrift"]));
var_dump(html_entity_decode($_REQUEST["ueberschrift"]));
Code:
string(35) "BMW Teile, Zubehör und Accessoires"
string(35) "BMW Teile, Zubehör und Accessoires"
string(35) "BMW Teile, Zubehör und Accessoires"


Frage: Warum wird bei der Variablen "ueberschrift" das Umlaut "ö" normal übergeben Hätte es gerne als HTML-Code, wie bei der anderen Variablen.
Habe schon sämtliche mir bekannten Möglichkeiten ausprobiert dieses mittels PHP zu konvertieren, aber es gelingt mir nicht.

Wo liegt mein Fehler? Ich hoffe mir kann jemand helfen, ich verzeifle noch.

Danke und Gruß
Loveboat
 
Moin,

der Editor wandelt diese Zeichen vor der Übergabe um, bei den <input>'s geschieht dies jedoch nicht....du musst es also selbst umwandeln.
 
Hi,

danke für die schnelle Antwort. Allerdings verstehe ich es nach wie vor nicht. habe mal ein wenig rumprobiert und irgendwie ist das komisch.

Also meine Tests:


Formularfeld auf Admin-Seite beinhaltet:
HTML:
<div><input name="titel" type="text" class="titel" value="Decanter M&auml;rz 2009" /></div>

Nach Absenden des Formulars erhalte ich mittels folgendem Code
PHP:
var_dump($_REQUEST["titel"]);
$titel = htmlentities($_REQUEST["titel"], ENT_QUOTES);
var_dump($titel);

folgende Ausgabe:
Code:
string(18) "Decanter März 2009"
string(23) "Decanter M&auml;rz 2009"


Jetzt habe ich auf dem gleichen Server eine neue Datei angelegt: test.html
Diese beinhaltet folgenden Code:

HTML:
<form method="post" action="output.php" target="_self">
<input name="titel" type="text" class="titel" value="Decanter M&auml;rz 2009" />
<input name="Submit1" type="submit" value="Absenden" />
</form>

Wenn ich das Formular dann absende und die Daten an die output.php Datei schicke, erhalte ich bei folgendem Code
PHP:
var_dump($_REQUEST["titel"]);
$titel = htmlentities($_REQUEST["titel"], ENT_QUOTES);
var_dump($titel);

folgenden Output:
Code:
string(19) "Decanter März 2009"
string(33) "Decanter M&Atilde;&curren;rz 2009"

Beide Seiten enthalten im Header folgenden Code:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>


Meine Frage: warum erhalte ich bei gleichem Code unterschiedliche Ausgaben. Ich verzweifle schon daran und komme nicht weiter.

Hoffe mir kann jemand helfen.

Danke und Gruß
Loveboat
 
Hi,

also ich habe mal in meinem Programm "phpDesigner" nachgeschaut. Es gibt unter Extras die Möglichkeit der Kodierung einzustellen. Diese steht aber auf Default, also auf "system-Default". Aber selbst wenn ich dies auf "ISO 8859-1" umstelle ändert sich nichts am Ergebnis.

Und nun?
 
Schaue mal im Editor(Problemdatei im aktiven Fenster) ganz unten in der linken Ecke...was steht da?

Die von dir vorgenommene Änderung wirkt sich nur auf neue Dateien aus...die Kodierung einer existierenden Datei kannst du Ändern unter File->File Encoding
Wähle dort ANSI(falls das nicht in der Ecke unten steht)....und speichere das ganze auf dem Server ab.
 
Sorry, hab das mal probiert...es ist genau andersherum.
Dieses Ergebnis erhält man, wenn eine Latin1-kodierte Datei als UTF8 deklariert wird.

Warum deine META-Angabe ignoriert wird, kann ich nicht sagen, ich würde es auf den Browser schieben.
Hast du vielleicht per Hand die Codierung geändert(Browser->Ansicht->Zeichenkodierung).

Falls nicht, schaue mal bitte in Firebug im Netzwerk-Tab bei "Header" nach und poste den Inhalt hier.

Ist das irgendwo Live zu Betrachten?
 
HI,

vielen Dank für Deine Info.

Hier kannst Du eine Testseite anschauen, habe Sie mal für Dich hochgeladen. Dort liegt sie nur als Test: http://www.weingut-riffel.de/test/test.html

Was meinst Du mit Firebug

Habe mal diese Testseite im Safari ausprobiert, gleiches Problem. also zurück zu IE8. Dort unter Ansicht habe ich mal die Kodierung geändert, und sobald ich auf Unicode UTF-8 umschalte erhalte ich folgenden Output:

Code:
string(19) "Decanter März 2009"
string(33) "Decanter M&Atilde;&curren;rz 2009"

Wenigstens wird hier die erste Variable schonmal richtig angezeigt, aber mit der Umwandlung des Umlauts zum HTML-Code klappt es nach wie vor nicht.
 
Zurück