Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Codierung wird nach Event-function gewechselt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Monarch
    hat ein Thema erstellt [Erledigt] Codierung wird nach Event-function gewechselt.

    [Erledigt] Codierung wird nach Event-function gewechselt

    Hallo Experten,

    ich habe jetzt mal einen neuen Thread aufgemacht, da ich auf meine Frage immer Antworten mit utf-8 bekomme. Ich bin zwar kein PHP Experte, aber mein Problem liegt nicht bei utf-8 Codierung.

    Also die Situation
    -S1.php Seite ist als UTF-8 ohne BOM hinterlegt
    -Die Seite enhält eine Form mit einem Submit button "Speichern"
    -Es gibt einen Sicherheitsabfrage falls die Seite geschlossen wird.

    Hier der reduzierte Code der Seite:

    PHP-Code:
    <?php

    //Datenspeichern
    if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_REQUEST['SaveData']))

      {
        echo 
    "gespeichert";
      }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Language" content="de">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Untitled Page</title>
    <style type="text/css">
    div#container
    {
       width: 970px;
       position: relative;
       margin-top: 0px;
       margin-left: auto;
       margin-right: auto;
       text-align: left;
    }
    body
    {
       text-align: center;
       margin: 0;
       background-color: #DCDCDC;
       background-image: url(images/_bkgrnd.png);
       color: #000000;
    }
    </style>
    <style type="text/css">
    a
    {
       color: #0000FF;
       text-decoration: underline;
    }
    a:visited
    {
       color: #800080;
    }
    a:active
    {
       color: #FF0000;
    }
    a:hover
    {
       color: #0000FF;
       text-decoration: underline;
    }
    </style>
    <style type="text/css">
    #wb_CCFFeedbackbogen
    {
       background-color: transparent;
       border: 0px #000000 solid;
    }
    #ButtonSaveData
    {
       border: 2px #C0C0C0 solid;
       background-color: transparent;
       background-image: url(images/ButtonStandard2.gif);
       background-repeat: repeat-x;
       background-position: center center;
       color: #C4000A;
       font-family: Arial;
       font-weight: bold;
       font-size: 13px;
    }
    </style>
    <!-- TableCCFFragen <HEAD> -->
    <style type="text/css">
    #TableCCFFragen
    {
       border: 0px #C0C0C0 none;
       background-color: transparent;
       border-spacing: 0px;
    }
    #TableCCFFragen td
    {
       padding: 0px 0px 0px 0px;
    }
    #TableCCFFragen td div
    {
       white-space: nowrap;
    }
    </style>


     
     <!-- Sicherheitsabfrage-->
     
    <script type="text/javascript">

            
    window.onbeforeunload = function() {
        if (document.getElementById("cbDataChange").value == 'true') {
            return "Sie verlieren ggf. Ihre letzten, nicht gespeicherten Eingaben!";
        } else {
            return;
        }
    }
    </script>


    </head>
    <body onLoad="if (location.hash != '#TableStartPos') location.hash = '#TableStartPos';">
    <div id="container">
    <!-- Bindung -->
    <div id="Html2" style="position:absolute;left:146px;top:224px;width:388px;height:69px;z-index:1">


    <div id="Bindungen_Text" style="position:absolute;left:0px;top:0px;width:382px;height:44px;z-index:24;text-align:left;">
    <div style="line-height:22px;"><span style="color:#C4000A;font-family:Arial;font-size:17px;">
       <strong>1 - <?php echo $_GET["P3"];  ?> 2 -  <?php echo htmlentities$_GET["P3"], ENT_QUOTES); ?></strong></span></div>
    </div>
    </div>
    <div id="wb_CCFFeedbackbogen" style="position:absolute;left:63px;top:297px;width:846px;height:391px;z-index:2;">
    <form name="CCFFeedbackbogen" method="post" action="" enctype="application/x-www-form-urlencoded" target="_self" id="CCFFeedbackbogen">
    <input type="submit" id="ButtonSaveData" onclick="f_checkbox('false');return true;return false;" name="SaveData" value="Speichern" style="position:absolute;left:27px;top:361px;width:812px;height:25px;z-index:0;">
    </form>
    <input type="hidden" id="cbDataChange" name="cbDataChange" value="false"></div>


    </div>
    </body>
    </html>
    Jetzt das Problem:

    Die Seite wird mit Parameter aufgerufen

    http://.../S1.php?P1=Fremdbild (M)&P2=Kollege&P3=Jörg&P4=5&P5=0&P6=Standard#Table StartPos

    der Parameter P3 wird im codebereich siehe "<!-- Bindung -->" (<strong>1 - <?php echo $_GET["P3"]; ?> 2 - <?php echo htmlentities( $_GET["P3"], ENT_QUOTES); ?></strong> ) zweimal ausgegeben. Beim ersten Aufruf der Seite ist die Ausgabe folgende:

    1-J�rg
    2-Jörg

    Achtung jetzt kommt es: Wenn ich jetzt auf den Submit-Button "Speichern" drücke, wird die Seite neu aufgebaut und die Ausgabe ist genau umgekehrt:

    1-Jörg
    2-J�rg

    Aber, der Witz an der Sache ist, wenn ich die den Codeteil der Sicherheitsabfrage siehe "<!-- Sicherheitsabfrage-->" entferne, ist das Problem verschwunden.

    Wie löse ich das bzw. was passiert beim auslösen von Speichern ?!?

    mfg eem Monarch

    Hier kann man die Seite sehen in reduzierter Form

    http://www.deutsche-training.de/CCFOnline/CCFFeedbacks.php?P3=Jörg#TableStartPos

  • Monarch
    antwortet
    eagle275 hat den Fehler gefunden: Beim Provider angerufen Umzug und Problem gelöst

    Hausl: das mit dem Header hatten wir gestern schon, brachte nix. Wie die Seite gespeichert ist steht oben in der Fehlerbeschreibung.

    Danke eagle --- mfg eem monarch

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    in dem Fall würde ich vermuten, das nicht alle beteiligten Files das richtige Encoding haben - die Ausführünge von dl4all zeigen das

    Einen Kommentar schreiben:


  • hausl
    antwortet
    Zitat von eagle275 Beitrag anzeigen
    das Problem hängt daran, dass du dich allein auf den Webserver und die Meta-Angabe verlässt...
    sende bitte eine header-Anweisung, die das Encoding vorschreibt - offenbar ist dein Webserver intern noch nicht durchgehend auf utf8 gestellt...
    Das header() oben in seinem Code fehlt war mir auch schon aufgefallen, aber das hatte der TE im letzten Thread zu diesem Problem schon klargestellt das es mit und ohne gleich aussieht, sich nichts änderte. Darauf habe ich mich verlassen. Die nur zur Info - das ist nämlich nicht der erste Thread zu genau dem Ding hier.

    Zitat von Monarch Beitrag anzeigen
    ...

    Als erstes ganz oben auf der Seite steht

    PHP-Code:
    <?php
     header
    ("Content-Type: text/html; charset=utf-8");
    ?>
    Es gibt auch die Metaangabe

    PHP-Code:
    <head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    ... 
    ...
    Zitat von hausl Beitrag anzeigen
    Wie ist die PHP Datei abgespeichert? ...

    Einen Kommentar schreiben:


  • dl4all
    antwortet
    Zitat von Monarch Beitrag anzeigen
    Das kommt dadurch, dass ich Versuche fahre um das Problem zu lösen .... Aber es spielt keine Rolle was kommt, sondern warum es sich dreht!!!! bzw. warum der Fehler nur Auftritt wenn der Code der Sicherheitsabfrage vorhanden ist . siehe Fehlerbeschreibung oben
    das spielt leider doch eine wichtige Rolle:

    Variante A
    Wenn ein Dokument als Unicode ( UTF-8 ) abgespeichert wurde, jedoch als ISO 8859-1 interpretiert wird, geschieht folgendes:

    erwartete Ausgabe: ä ö ü
    wirkliche Ausgabe: ä ö ü

    D.h. im Editor (z.B. Notepad++) steht bei Kodierung zwar "UTF 8 ohne BOM", aber im Sourcecode s des Dokuments steht an mindestens einer Stelle ein anderes Format, wie z.B.

    • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    • <?php
    header('Content-Type: text/html; charset=ISO-8859-1');
    ?>
    • <form action='$link' method='post' accept-charset='ISO-8859-1'>

    Das ä wurde binär gesehen als 11000011 10100100 gespeichert. Die beiden Bytes gehören laut UTF-8 zusammen, werden in ISO 8859-1 allerdings auseinander genommen. Folglich wird aus 11000011 ein à und aus 10100100 ein ¤-Zeichen.

    Variante B
    Wenn die Umlaute als Fragezeichen dargestellt werden, dann wird ein als ISO 8859-1 kodiertes Dokument als UTF-8 interpretiert,
    d.h. im Editor (z.B. Notepad++) steht bei Kodierung nicht "UTF 8 ohne BOM"!

    erwartete Ausgabe: ä ö ü
    wirkliche Ausgabe: � � �

    Mit anderen Worten wurde hier ein ä als 11100100 gespeichert.
    In UTF-8 ist dieses Byte jedoch ungültig, wird also nicht angezeigt oder ignoriert, bzw. als ? oder � dargestellt.

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    das Problem hängt daran, dass du dich allein auf den Webserver und die Meta-Angabe verlässt...
    sende bitte eine header-Anweisung, die das Encoding vorschreibt - offenbar ist dein Webserver intern noch nicht durchgehend auf utf8 gestellt...

    Einen Kommentar schreiben:


  • Monarch
    antwortet
    Das kommt dadurch, dass ich Versuche fahre um das Problem zu lösen .... Aber es spielt keine Rolle was kommt, sondern warum es sich dreht!!!! bzw. warum der Fehler nur Auftritt wenn der Code der Sicherheitsabfrage vorhanden ist . siehe Fehlerbeschreibung oben

    Einen Kommentar schreiben:


  • dl4all
    antwortet
    Zitat von Monarch Beitrag anzeigen
    Beim ersten Aufruf der Seite ist die Ausgabe folgende:

    1-J�rg
    2-Jörg

    Achtung jetzt kommt es: Wenn ich jetzt auf den Submit-Button "Speichern" drücke, wird die Seite neu aufgebaut und die Ausgabe ist genau umgekehrt:

    1-Jörg
    2-J�rg

    Aber, der Witz an der Sache ist, wenn ich die den Codeteil der Sicherheitsabfrage siehe "<!-- Sicherheitsabfrage-->" entferne, ist das Problem verschwunden.

    Wie löse ich das bzw. was passiert beim auslösen von Speichern ?!?

    mfg eem Monarch

    Hier kann man die Seite sehen in reduzierter Form

    http://www.deutsche-training.de/CCFO...#TableStartPos
    VORSICHT: Du gibst uns falsche Infos!

    Du schreibst zwar das Du "�" bekommst, wenn ich aber deinen Bespiel-Link aufrufe, dann steht da "ö"

    Wie sieht denn jetzt tatsächlich Dein Fehlerbild aus

    Einen Kommentar schreiben:


  • Monarch
    antwortet
    Hallo Hausl,

    Leerzeichen im URL -> "JA" aber mit Aufruf "http://.../S1.php?P3=Jörg" bleibt das Problem. Und "Accept Charset" habe ich versucht, ändert aber auch nichts, da die Ausgabe von P3 außerhalb des Formobjekt stattfindet.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    http://.../CCFFeedbacks.php?P1=Fremdbild (M)&P2=Kollege&P3=JörgP4=5&P5=0&P6=Standard#Table StartPos
    Du hast Leerzeichen in der URI?

    Bitte example.com für beispielURLs verwenden.

    Hast du im Form das Accept Charset aus dem anderen Thread schon versucht?

    Einen Kommentar schreiben:

Lädt...
X