Fehler bei Umlaute

  • Hallo Leute

    Ich habe folgenden Code geschrieben um Umlaute Html gerecht zu codieren
    $
    queryParam["T2"] = addslashes($queryParam["T2"]);
    $queryParam["T2"] = htmlentities($queryParam["T2"] );

    echo $queryParam["T2"];

    funktioniert bei ä,ö,ü wunderbar, aber das Durhmesser Sympol wird fehlerhaft codiert.

    Liegt das bei PHP oder Firefox ?

    Verwende:

    Firefox 1.0
    Apache/2.0.54 (Win32) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/5.0.4

    MFG

    Peter

  • Hi!

    Welches ASCII-Zeichen benutzt Du für den Durchmesser?
    Bei mir siehts gut aus:

    Code
    echo htmlentities(chr(216));


    wird im Quelltext ausgegeben als

    Code
    Ø


    und im Firefox auch als erkennbares Durchmesserzeichen angezeigt.
    Mit ASCII 248 (ø) funktioniert es auch.

    PS:
    Bist Du sicher, dass "addslashes" als Vorbereitung für die HTML-Ausgabe Sinn macht? Ich verstehe es nicht.

    Gruss,
    Scheinmensch

  • Hi


    Die addslashes ist notwendig, wenn dieses Script mit einer Datenbank agiert.
    Ich habe noch eine kleinigkeit vergessen zu erwähnen: Die Daten werden per AJAX übermittelt, wenn ich folgenden Code anwende habe ich auch keine Propleme, aber ich möchte die Daten per AJAX übertragen. Wie gesagt bei Netscape und Internet kein Proplem.

    <?php

    $T2 = addslashes($T2);
    $T2 = htmlentities($T2 );

    echo $T2,"<br>";
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <form action="test.php" method="get" enctype="application/x-www-form-urlencoded">
    <input name="T2" type="text">
    <input name="submit" type="submit">
    </form>
    </body>
    </html>

    dieses Script funktioniert, aber ist halt ohne AJAX

    Mit freundlichen Gruß

    Peter

  • HHallo Leute

    Ich habe mittlerweile auf FireFox 1.5.9.7 aktualiesiert und habe das ganze mal auf einem echten WEB Server laufen lassen um evtuelle Konfigurationspropleme meinerseits auszuschliessen.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Index.html</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <script type="text/javascript" >

    var xmlhttp=false;

    function getXmlHttpRequestObject()
    {
    var xmlHttpRequest = false;

    if ( window.XMLHttpRequest )
    {
    try
    {
    xmlHttpRequest = new XMLHttpRequest();
    }
    catch (e)
    {
    xmlHttpRequest = false;
    }
    }
    else if ( window.ActiveXObject )
    {
    try
    {
    xmlHttpRequest = new ActiveXObject( "Msxml2.XMLHTTP" );
    }
    catch (e)
    {
    try
    {
    xmlHttpRequest = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
    catch (e)
    {
    xmlHttpRequest = false;
    }
    }
    }

    // Override mime type if browser supports it (like Mozilla)
    if ( xmlHttpRequest.overrideMimeType )
    {
    xmlHttpRequest.overrideMimeType( "text/xml" );
    }

    return xmlHttpRequest;
    }

    function Eintrag() {
    xmlhttp = getXmlHttpRequestObject();


    xmlhttp.open("GET", 'IntoDB.php?T2=' +
    document.getElementById('T2').value, true);
    xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) {
    document.getElementById('result').value = xmlhttp.responseText;
    }
    }
    xmlhttp.send(null)
    return false;
    }
    </script>
    <body>
    <form enctype="multipart/form-data" action="" onSubmit="return Eintrag()" method="get">
    <p>Technische Daten</p>
    <p>
    <input type="text" id="T2" > </input>
    Bezeichnung und Wert z.b: Leistung 80Watt (bis 20 Eintr&auml;ge m&ouml;glich) </p>
    <p>&nbsp;</p>
    <p>
    <input type="text" id="result" value=""> </input>
    </p>
    <p>
    <input id="submit" type="submit"> </input>
    </form>
    </p>
    </body>
    </html>

    -----------Hier folgt die IntoDB.php (abgeänderte Version aber Prinzip das selbe------------------------------------------------------------------------------

    <?php
    $queryParam["T2"] = $_SERVER['QUERY_STRING'];
    //$queryParam["T2"] = $_GET["T2"];
    //$queryParam["T2"] = addslashes($queryParam["T2"]);
    //$queryParam["T2"] = htmlentities($queryParam["T2"]);
    echo $queryParam["T2"];
    ?>


    so, wenn man die Index laufen läst dann erhät man in der Ausgabe die Ursprungsform des Query Strings und da sieht man schon beträchliche Unterschiede:


    für das ü heißt der Query String bei Netscape: T2=%FC
    bei FireFox: T2=%C3%BC
    bei Microsoft: T2=%FC

    Vieleicht gibt es eine Funktion die den Query String von Firefox entsprechent maskiert.

    Gruß

    Peter

  • Hallo

    habe die Index.html folgender ma0en aktualiesiert:

    xmlhttp.open("GET", 'IntoDB.php?T2=' +
    ==>encodeURIComponent(document.getElementById('T2').value), true);
    xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) {
    document.getElementById('result').value = xmlhttp.responseText;

    funktioniert super

    Danke für die Hinweise

    Gruß Peter.