Philipp: EUR-Zeichen darstellen??

Hallo!

Ich habe einige PHP-Formulare, deren Eingaen in einer DB gespeichert werden. Nun kommt aber bei der Ausgabe statt des EUR-Zeichens ein ?-Zeichen raus...und so wurde es auch in der DB eigetragen. Schreibe ich das Zeichen direkt in die DB oder direkt auf die Seite, geht es.
Was passiert da auf dem Weg vom Formular in die DB und wie kann ich das rausfiltern. Suchen per RegExp half nichts...

Hat jemand einen Tip ?

Danke

PS: in der Vorschau sehe ich gerade, das es hier auch nicht fuktioniert! habe alles gegen EUR ausgetauscht...scheine wohl nicht der eizige zu sein :)

  1. Hat jemand einen Tip ?

    »»

    Könnte mit dem Url-Encoding zu tun haben.
    In Perl jage ich jeden gelesenen Wert durch diese zwei Zeilen:

    $wert =~ tr/+/ /;
    $wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

    Du kannst das auch umgehen, wenn du statt einem Eurozeichen die Zeichenfolge € benutzt, das wird in jedem Browser als ein Eurozeichen interpretiert.

    1. Du kannst das auch umgehen, wenn du statt einem Eurozeichen die Zeichenfolge € benutzt, das wird in jedem Browser als ein Eurozeichen interpretiert.

      Würde ich sehr gerne genau so ersetzen, nur wie finde ich das EUR-Zeichen? gebe ich es explizit an, scheint php es schon nicht mehr zu kennen;

      preg_replace('!EUR!','€',$Text); macht nix...natürlich hier statt EUR das zeichen :)

      $wert =~ tr/+/ /;
      $wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

      ich habe noch nie perl geschrieben, was geht da genau vor sich?

      Viele Grüße

      1. preg_replace('!EUR!','€',$Text); macht nix...natürlich hier statt EUR das zeichen :)

        Kenne mich in PHP nicht so gut aus wie in Perl, deswegen kann ich dir wohl nicht wirklich weiterhelfen - ich weiß nicht, wie die Formulardaten in PHP aufgefangen werden.

        Aber was gehen sollte: Direkt schon in das Eingabeformular statt  gleich € schreiben.

        ich habe noch nie perl geschrieben, was geht da genau vor sich?

        Dekodiert einfach die verschlüsselten Formulardaten nach einem bestimmten Schema. Ist aber eh egal, weil du ja PHP brauchst.

        1. Aber was gehen sollte: Direkt schon in das Eingabeformular statt  gleich € schreiben.

          aber das kann ich ja keinem Benutzer zumuten... :)

    2. Moin!

      In Perl jage ich jeden gelesenen Wert durch diese zwei Zeilen:

      $wert =~ tr/+/ /;
      $wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

      Und die vernünftigen Programmierer basteln sich sowas nicht selbst, sondern benutzen komfortabel das CGI.pm-Modul. Damit muß man sich über URL-Codierung keine Gedanken mehr machen.

      - Sven Rautenberg

      --
      "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
      1. Und die vernünftigen Programmierer basteln sich sowas nicht selbst, sondern benutzen komfortabel das CGI.pm-Modul. Damit muß man sich über URL-Codierung keine Gedanken mehr machen.

        Hey! Das CGI.pm benutze ich, um es mit enurl() zu kodieren, den Code da oben hatte ich vor LANGER Zeit aus selfhtml geklaut und schleppe den schon einige Zeit von Programm zu Programm mit.

        Aber danke für den Hinweis, werde ich eben in Zukunft vernünftiger!

  2. Hallo,

    habe alles gegen EUR ausgetauscht...

    Ist das sicherste. Siehe auch:
    http://www.cs.tut.fi/~jkorpela/html/euro.html

    Gruesse,

    Thomas

  3. Ich habe einige PHP-Formulare, deren Eingaen in einer DB gespeichert werden. Nun kommt aber bei der Ausgabe statt des EUR-Zeichens ein ?-Zeichen raus...und so wurde es auch in der DB eigetragen. Schreibe ich das Zeichen direkt in die DB oder direkt auf die Seite, geht es.
    Was passiert da auf dem Weg vom Formular in die DB und wie kann ich das rausfiltern. Suchen per RegExp half nichts...

    Der Grund könnte mal wieder dieser besch... proprietäre M$-Müll sein. Benutzer eines Windows-Systems schicken das Formular mit dem Euro-Zeichen ab. Windows stellt es intern als € dar und sendet sies vielleicht auch als ASCII 128 an den Server. Danach solltest du suchen und es durch "€" ersetzen.

    Verwende außerdem iso-8859-15 oder UTF-8 statt iso-8859-1.

    Stefan