Der folgende Beitrag wurde am 14. 06. 2006, 11:17 Uhr von Roar veröffentlicht.
Ich hab ein Problem mit dem Einlesen von Daten aus einem HTML-Eingabefeld in eine Datei.
Ich habe also eine Form mit einem Input Feld:
new.php:
...
<?php
  if (isset($_POST['send'])) {
    if (!eregi('preis',$gen_price)) {
      $gen_price_invalid_text = 'Ein Preis mit Text muss angegeben werden';
      $gen_price_invalid = true;
    }
    ...
    if (!$invalid_input) {
      ...
      fwrite($handle,utf8_encode(htmlentities($gen_price))."\r\n");
      ...
    }
?>
<?php
  echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
?>
...
<form name="update_hp" method="post" enctype="multipart/form-data" action="new.php">
  <input id="field" name="gen_price" />
  <input type="submit" name="send" value="Absenden" />
</form>
...
Beim Drücken auf den Absenden-Button wird die gleiche Datei wieder aufegrufen und es werden die Variablen überprüft. Bei Erfolg werden die Daten in eine Datei geschrieben und es wird an eine andere Datei weitergeleitet.
Das Problem ist nun, falls im Eingabfeld das Eurozeichen vorkommt, wird dieses nicht in € umgewandelt, sondern in der Datei steht anschließend ein Kästchen. Bei anderen Sonderzeichen wie ö ä ü ß funktioniert alles problemlos.
Die Dateien selbst (php, html) sind als UTF-8 abgespeichert.
Der folgende Beitrag wurde am 14. 06. 2006, 11:44 Uhr von wahsaga veröffentlicht.
hi,
> Das Problem ist nun, falls im Eingabfeld das Eurozeichen vorkommt, wird dieses nicht in € umgewandelt,
Warum sollte es?
> sondern in der Datei steht anschließend ein Kästchen. Bei anderen Sonderzeichen wie ö ä ü ß funktioniert alles problemlos.
> Die Dateien selbst (php, html) sind als UTF-8 abgespeichert.
Und die Daten selber möchtest du auch in UTF-8 erfassen und wieder ausgeben?
Als erstes solltest du mal deinem Formular auch noch ein entsprechendes accept-charset="utf-8" verpassen - damit der browser auch definitiv gesagt bekommt, dass du die Formulardaten als UTF-8 bekommen möchtest, und nicht in sonsteiner Kodierung, die dem Browser u.U. besser gefällt.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Der folgende Beitrag wurde am 14. 06. 2006, 13:01 Uhr von Roar veröffentlicht.
> hi,
>
> > Das Problem ist nun, falls im Eingabfeld das Eurozeichen vorkommt, wird dieses nicht in € umgewandelt,
>
> Warum sollte es?
Wenn ich die gespeicherte Datei einlese wird, bekomme ich das Kästchen. Wenn ich dies im HTML-Code dann ausgebe, bekomme ich unter Windows das Eurozeichen (Obwohl im Quelltext das Kästchen ist), aber unter Linux bekomme ich nur kommisches Zeugs. Umgekehrt genau das gleiche Problem (also wenn ich unter Linux die Datei abspeichere funktioniert auch das auslesen wieder aber nicht mehr unter Windows)
>
> > sondern in der Datei steht anschließend ein Kästchen. Bei anderen Sonderzeichen wie ö ä ü ß funktioniert alles problemlos.
> > Die Dateien selbst (php, html) sind als UTF-8 abgespeichert.
>
> Und die Daten selber möchtest du auch in UTF-8 erfassen und wieder ausgeben?
Is mir eigentlich egal. Ich will nur das mit dem Eurozeichen hinkriegen, also dass ich ein € bekomme.
>
> Als erstes solltest du mal deinem Formular auch noch ein entsprechendes accept-charset="utf-8" verpassen - damit der browser auch definitiv gesagt bekommt, dass du die Formulardaten als UTF-8 bekommen möchtest, und nicht in sonsteiner Kodierung, die dem Browser u.U. besser gefällt.
Hab ich schon probiert. Funktioniert aber nicht.
>
> gruß,
> wahsaga
>
>
Danke und Gruß, Roar
Der folgende Beitrag wurde am 14. 06. 2006, 13:22 Uhr von wahsaga veröffentlicht.
hi,
> Wenn ich die gespeicherte Datei einlese wird, bekomme ich das Kästchen.
Wie und wo?
> Wenn ich dies im HTML-Code dann ausgebe, bekomme ich unter Windows das Eurozeichen (Obwohl im Quelltext das Kästchen ist), aber unter Linux bekomme ich nur kommisches Zeugs.
Wird die Seite mit passenden Angaben zur Zeichenkodierung ausgeliefert?
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Der folgende Beitrag wurde am 14. 06. 2006, 14:01 Uhr von Roar veröffentlicht.
> hi,
>
> > Wenn ich die gespeicherte Datei einlese wird, bekomme ich das Kästchen.
>
> Wie und wo?
Einlesen mach ich in einer anderen Datei:
overview.php:
<?php
  echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
?>
...
<body>
...
  chdir('../test');
  if (file_exists('test.eid')) {
    if ($handle = @fopen('test.eid', 'r')) {
      while (!feof($exposee_handle)) {
        $line_text = trim(fgets($handle));
        $line_count++;
        switch ($line_count) {
              ...
              case 4:
                $gen_price_file = utf8_decode($line_text);
                break;
              ...
              default:
            }
          }
        }
      }
      fclose($handle);
    }
  }
...
Das Kästchen erscheint aber schon in der Datei test.eid. Also kanns am Einlesen nicht liegen.
>
> > Wenn ich dies im HTML-Code dann ausgebe, bekomme ich unter Windows das Eurozeichen (Obwohl im Quelltext das Kästchen ist), aber unter Linux bekomme ich nur kommisches Zeugs.
>
> Wird die Seite mit passenden Angaben zur Zeichenkodierung ausgeliefert?
Beide Seiten (new.php und overview.php) haben folgendes am Anfang stehen:
<?php
  echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
?>
>
> gruß,
> wahsaga
>
>
Der folgende Beitrag wurde am 14. 06. 2006, 14:54 Uhr von fastix® veröffentlicht.
Moin!
Du möchtest zuzsätzlich:
Erstens:
Auf beiden Seiten den meta-tag Content-type setzen und den Zeichensatz übergeben:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Natürlich kannst Du das alternativ auch mit:
<?php
header("Content-type: text/html; charset=UTF-8");
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; #Kurztags nicht ausgeschaltet?
?>
...
<h1>Sicherheitshalber:</h1>
<form ... accept-charset="utf-8">
...
oder mit einer entsprechenden Konfiguration des Servers. Selbstredend kannst Du auch alle drei Methoden verwenden.
Zweitens:
- Deinem Quelltext-Betrachter mitteilen, er möge Dir den Text als UTF-8 darstellen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
Der folgende Beitrag wurde am 14. 06. 2006, 15:41 Uhr von Roar veröffentlicht.
Also erst mal Danke euch beiden für die Hilfe!
> Moin!
>
> Du möchtest zuzsätzlich:
>
> Erstens:
>
> Auf beiden Seiten den meta-tag Content-type setzen und den Zeichensatz übergeben:
> <meta http-equiv="content-type" content="text/html; charset=UTF-8">
>
> Natürlich kannst Du das alternativ auch mit:
>
> <?php
> header("Content-type: text/html; charset=UTF-8");
> echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; #Kurztags nicht ausgeschaltet?
> ?>
> ...
> <h1>Sicherheitshalber:</h1>
> <form ... accept-charset="utf-8">
> ...
>
>
> oder mit einer entsprechenden Konfiguration des Servers. Selbstredend kannst Du auch alle drei Methoden verwenden.
Habe bei beiden Seiten das meta-tag hinzugefügt: geht nicht. Server kann ich nicht konfigurieren...
>
>
> Zweitens:
> - Deinem Quelltext-Betrachter mitteilen, er möge Dir den Text als UTF-8 darstellen.
>
Wie meinst du das? Mein Problem ist, dass das Eurozeichen im Inputfeld richtig angezeigt wird. Dann wenn ich aber auf Abschicken gehe und der Inhalt dieses Input-Feldes in eine Datei mit htmlentities gesichert werden soll, steht dann dort weder € noch € sondern ein in htmlentiies umgesetztes € (unter Linux): ⬠. unter Windows steht in der Datei nur ein Kästchen, welches beim späteren Einlesen aus der Datei in eine HTML-Seite genauso in der HTML_Datei drinsteht. Der Browser interpretiert aber dann das Kästchen wieder als €.
Total verwirrend :D
>
>
> MFFG (Mit freundlich- friedfertigem Grinsen)
>
> fastix®
> :http://semina¡
Der folgende Beitrag wurde am 14. 06. 2006, 15:47 Uhr von fastix® veröffentlicht.
Moin!
> Wie meinst du das? Mein Problem ist, dass das Eurozeichen im Inputfeld richtig angezeigt wird. Dann wenn ich aber auf Abschicken gehe und der Inhalt dieses Input-Feldes in eine Datei mit htmlentities gesichert werden soll, steht dann dort weder € noch € sondern ein in htmlentiies umgesetztes € (unter Linux): ⬠. unter Windows steht in der Datei nur ein Kästchen, welches beim späteren Einlesen aus der Datei in eine HTML-Seite genauso in der HTML_Datei drinsteht. Der Browser interpretiert aber dann das Kästchen wieder als €.
> Total verwirrend :D
Nein, ist es nicht!
htmlentities() will aber auch den Zeichensatz wissen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
Der folgende Beitrag wurde am 14. 06. 2006, 16:07 Uhr von Roar veröffentlicht.
> Moin!
>
>
> > Wie meinst du das? Mein Problem ist, dass das Eurozeichen im Inputfeld richtig angezeigt wird. Dann wenn ich aber auf Abschicken gehe und der Inhalt dieses Input-Feldes in eine Datei mit htmlentities gesichert werden soll, steht dann dort weder € noch € sondern ein in htmlentiies umgesetztes € (unter Linux): ⬠. unter Windows steht in der Datei nur ein Kästchen, welches beim späteren Einlesen aus der Datei in eine HTML-Seite genauso in der HTML_Datei drinsteht. Der Browser interpretiert aber dann das Kästchen wieder als €.
> > Total verwirrend :D
>
> Nein, ist es nicht!
> htmlentities() will aber auch den Zeichensatz wissen.
Habs jetzt geändert in fwrite($handle,htmlentities($price,ENT_COMPAT,"UTF-8")."\r\n");
Und jetzt funktioniert es endlich (unter Linux). Windows weiß ich noch nicht :D
Aber wird schon hinhaun :D
Vielen vielen Dank!
>
> MFFG (Mit freundlich- friedfertigem Grinsen)
>
> fastix®
> Datei drinstehq
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4