Umlaute speichern und anzeigen

arreis

Grünschnabel
Hallo zusammen,
in meinem momentanem Projekt sollen einige Leute die Möglichkeit haben aktuelle Informationen direkt auf die Seite zu stellen. Dies geschieht über eine Textarea und wird dann mit php gesendet. Genau genommen wird eine Text.txt mit neuem Inhalt gefüllt. Bis hier funktioniert alles so wie es soll.

Wenn ich nun im Firefox z.B. Mühelos eingebe, wird das so gespeichert und auch wiedergegeben, die Wiedergabe ist dann auch im IE 8 so wie sie eingegeben worden ist.

Wenn ich das jetz aber im IE eingebe werde die Umlaute zu kleinen Kästchen und Teile des Textes gehen verloren. oder aber der Text wird nicht mehr angezeigt. In Firefox werden statt der Umlaute ? angezeigt.

Hat vielleicht jemand eine Idee woran das liegen kann?

UTF-8 Habe ich schon überall eingebaut wo es hin kann bzw.sollte.

Gruß arreis
 
Hi,

vielleicht hilft dir auch mein Thread:
http://www.tutorials.de/html-xhtml/...ichert-wird-jedoch-firefox-nicht-erkannt.html

Evtl. gibt es Probleme mit BOM. Kannst ja mal testen, ob dieser in deinen Dateien enthalten ist.
Ich hab da mal im Netz ein VB-Script gefunden, das dir den sogar entfernt, wenn einer enthalten ist.
Google einfach mal danach. In DreamWeaver kann man z.B. einstellen, ob mit oder ohne BOM gespeichert werden soll.
Wenn du jedoch nur mal kurz eine .txt im Windows-Editor lädst und speicherst, wird autom. der BOM gesetzt, der dadurch das Metatag utf-8 aushebelt.

Viele Grüße
 
Das Problem liegt aber aus meiner Sicht beim senden des Textes im IE. Firefoxmacht das so wie es sein soll und die *.txt die über Firefox geändert wird, wird im IE ja auch richtig angezeigt.
 
So ein ähnliches Problem hatte ich auch mal.

Versuche mal die Daten per PHP in UTF-8 mit [phpf]utf8_encode[/phpf] zu konvertieren.


Außerdem:
  • Setzt du den Charset per Meta-Tag?
  • Gibst du die Html-Datei per UTF-8 aus?
 
Wenn ich utf8_encode verwende funktioniert es im IE aber nicht mehr in Firefox.
Ein identisches Ergebniss in beiden Browsern erhalte ich, wenn ich utf8_decode verwende, dabei werde dann die Umlaute als ? dargestellt.

Den Charset habe ich im Meta-Tag. Ich muss leider zugeben, dass ich nicht weiss, was Du damit meinst die Html-Datei per UTF-8 auszugeben.

Ich gehe im Moment davon aus, dass man die PHP-Datei so schreiben muss, dass beim IE so und bei Firefox anders übergeben werden muss.

Macht man sowas mit If und else?

Gruß arreis
 
Den Charset habe ich im Meta-Tag. Ich muss leider zugeben, dass ich nicht weiss, was Du damit meinst die Html-Datei per UTF-8 auszugeben.
Ich meine den Zeichensatz, mit dem die Datei zum Browser übermittelt wird.
Das wird meistens durch den Server(-software) geregelt, aber du kannst folgendes versuchen:
PHP:
header('Content-Type: text/html; charset=utf-8');
Das sollte vor jedem echo() oder andere Ausgabe stehen.

Ich gehe im Moment davon aus, dass man die PHP-Datei so schreiben muss, dass beim IE so und bei Firefox anders übergeben werden muss.

Macht man sowas mit If und else?
Einen Workaround nur für einen Browser zu basteln, sollte nicht nötig sein.

Mit IF und ELSE kann man je nach Bedingung (true oder false) Befehle ausführen, z.B.:
PHP:
$i = 9;

if ($i == 9)
{
  echo '$i ist 9!';
}
else
{
  echo 'Fehler!';
}
 
Es gibt da, aus meiner sicht, noch eine Merkwürdigkeit. Ich habe ja schon geschrieben, dass die *.txt in Firefox richtig angezeigt wird wenn in dem php-script ohne utf8_encode bzw.de_code gearbeitet wird, der IE hingegen kleine Kästchen hervorruft.
Wenn ich nun die *.txt zurück auf meinen Rechner lade, einmal öffne und wieder zurückschicke,werde auch im IE die Umlaute angezeigt.
 
Ja, das ist ein klarer Fehler von Zeichensätzen & Kodierungen.

Folgender Code funktioniert getestet bei mir in Chrome, IE (v9), FF:
PHP:
<?php

#header('Content-Type: text/html; charset=utf-8');

if ( isset($_POST['content']) )
{
  file_put_contents('file.txt', $_POST['content']);
  die( header('Location: test.php') );
}

?>
<!doctype html>
<html>
  <head>
    <title></title>
  </head>
  
  <body>
    <form action="" method="post">
      <textarea name='content'><?php echo htmlentities(@file_get_contents('file.txt'), ENT_QUOTES, "UTF-8"); ?></textarea>
      <br />
      <input type="submit" value="Speichern!" />
    </form>
  </body>
</html>
 
Erstmal Danke für Deine Bemühungen aber das ist es auch nicht. Im Grunde ist mit dem Code genau so,als hätte man kein Charset angegeben. Habe das extra mal auf einem anderem Rechner getestet.
 
Darf ich noch einmal diesen Satz hier anbringen wie oben?

"Wenn du jedoch nur mal kurz eine .txt im Windows-Editor lädst und speicherst, wird autom. der BOM gesetzt, der dadurch das Metatag utf-8 aushebelt."
Dabei reicht es, wenn irgendeine Datei das BOM enthält, dass der Zeichensatz falsch interpretiert wird. Deshalb nie .txt Dateien im einfachen Windows-Editor öffnen und speichern.

Und tu uns mal bitte einen gefallen und poste die exakte Angabe der Zeichencodierungen der Browser. Also welche diese automatisch einstellen bzw. erkennen. Und zwar im Zustand des 1. Aufrufs der Seite und einmal, wenn ein User Text eingibt und diesen auf die Seite setzt.

Beim FF ist das über ANSICHT - ZEICHENCODIERUNG ablesbar.
Die Tutorial-Seite ist z.B. in ISO-8859-1 codiert.



Es gibt da, aus meiner sicht, noch eine Merkwürdigkeit. Ich habe ja schon geschrieben, dass die *.txt in Firefox richtig angezeigt wird wenn in dem php-script ohne utf8_encode bzw.de_code gearbeitet wird, der IE hingegen kleine Kästchen hervorruft.
Wenn ich nun die *.txt zurück auf meinen Rechner lade, einmal öffne und wieder zurückschicke,werde auch im IE die Umlaute angezeigt.
 

Neue Beiträge

Zurück