php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Umlaute in Codes umwandeln


 
Rumo
07-03-2005, 16:09 
 
Hallo
Ich habe bei meinem Server folgendes Problem:
Er stellt Umlaute immer als komische Zeichen dar.
Bei normalen HTML-Codes ist dies leicht zu umgehen mit solchen Codes wie z.B. ä für ä.
Bei meinem auf PHP programmierten Gästebuch funktioniert das nicht:

$text = str_replace ("ä", "ä", $text);
$text = str_replace ("Ä", "¨", $text);
$text = str_replace ("ö", "ö", $text);
$text = str_replace ("Ö", "Ö", $text);
$text = str_replace ("ü", "ü", $text);
$text = str_replace ("Ü", "Ü", $text);
$text = str_replace ("ß", "ß", $text);

hab ich in die Datei geschrieben, die das Gästebuch-Formular verarbeitet (wobei $text der vom besucher eingegebene Text ist).
Als ich das nächste mal die datei aufrief, standen in dem Code anstatt der umlaute wieder komische Zeichen.
Was kann ich da machen?

 
wdsl
07-03-2005, 16:14 
 
diese Funktion verwenden

http://www.php.net/manual/de/function.htmlentities.php

mfg
wdsl

 
asp2php
07-03-2005, 16:14 
 
htmlentities ist das, was du suchst

 
Rumo
07-03-2005, 16:21 
 
Funzt. Danke für die schnellen antworten

 
Armadi
22-03-2005, 14:40 
 
Hallo,

Ich habe auch das Problem mit falscher Darstellung der deutschen Umlaute in eMails.

Ich lege einen mehrzeiligen Text in einer Variablen ab. In diesem Text sind auch Umlaute enthalten. Wenn ich die Umlaute im Text auschreibe, wie man es schreibt, dann werden die Umlaute beim Empfänger in wirres Zeichen umgewandelt.

Wenn ich aber die Umlaute in HTML-Codes Ü schreibe , dann erscheint genau diesen Code im Text beim Empfänger.

Nun habe ich durch diesen Beitrag gehofft, die Lösung in der function 'htmlentities()' gefunden zu haben, leider war es nicht so.

Die 'htmlentities()' macht nicht dsa was sie machen sollte, oder das was behauptet wird, zu machen.

Mein Besipie:


<?php
//Mailversand

$empfaenger="empfaenger@gmx.de";
$betreff="Umlaute Darstellen";
$absender="absender@gmx.de";
$nachricht1="Die Umlaute ä - Ä, ö - Ö, ü - Ü und das ß werden übermittelt";
$nachricht2=htmlentities($nachricht1)'

@mail($empfaenger,$betreff,$nachricht2,$absender);

//ENDE
?>


Nun wird der Text beim Empänger so angezeigt:

Die Umlaute &auml; - &Auml;, &ouml; - &Ouml;, &uuml; - &Uuml; und das &szlig; werden &uuml;bermittelt.

anstatt, dass sie als Umlaute angezeigt werden.

Bitte hilft mir vielleicht jemand und sagt mir eine plausible Lösung?

Ich will keine Diskussion über Theorie und technisches Detail, sondern einfach eine Funktion oder eine Weg, wie man die Umlaute als Umlaute darstellt beim Empfänger eines eMails.

Danke an alle

 
penizillin
22-03-2005, 14:43 
 
woher weiß denn dein mail-client, dass es eine html- und keine plaintext-nachricht ist?

stichwort header?

 
pixelpope
22-03-2005, 15:25 
 
ich würde sagen, das hört sich beides nach problemen mit der zeichencodierung an.

htmlentities braucht man garnicht, wenn man auf der seite mit dem gästebuchformular den charset ordentlich angibt, z.b.
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> oder auch UTF-8
und dann natürlich auch auf der seite, auf der die einträge angezeigt werden, ansonsten sucht sich der browser des users einen aus, und wenn der nicht übereinstimmt, gibt's halt buchstabensuppe.



zu der sache mit der mail:
htmlentities ist genau das falsche, da du wahrscheinlich keine html-mail verschicken willst.
ich würde aber auch ein problem beim charset vermuten.

überprüfe mal, in welchem set dein texteditor deine dateien abspeichert und dann, in welchem dein mailprogramm die mails anzeigt...

 
wahsaga
22-03-2005, 15:30 
 
Original geschrieben von pixelpope
htmlentities braucht man garnicht, wenn man auf der seite mit dem gästebuchformular den charset ordentlich angibt, z.b.
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> oder auch UTF-8
und dann natürlich auch auf der seite, auf der die einträge angezeigt werden
natürlich "brauchst" du htmlentities oder zumindest htmlspecialchars (oder eine entsprechung), wenn du die daten auch in einer HTML-seite anzeigen willst. HTML-eigene sonderzeichen sind immer zu kodieren, wenn sie eben nicht ihre sonderzeichenbedeutung haben sollen.

 
Armadi
22-03-2005, 21:35 
 
Im Header-Bereich meiner Mailversand-Seite steht folgendes:

<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Ich nehme an, das ist der richtige Charset.


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:21 Uhr.