Ankündigung

Einklappen
Keine Ankündigung bisher.

UTF8 Kodierung

Einklappen

Neue Werbung 2019

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

  • UTF8 Kodierung

    Hallo,

    ich würde gerne UTF8 erzwingen- hab schon recht viel gegoogelt und im Manual nachgeschaut, aber ich krieg es mit keiner meiner x Versuche hin.

    Bin damit gerade ein bisschen überfordert, weil meine PHP Kenntnisse doch noch eher spärlich sind.

    Ich hoffe ihr könnt mir weiterhelfen...

    PHP-Code:
    <?PHP
    $dbname
    ="***";

    $dbhost="localhost";

    $dbuser="***";

    $dbpass="***";

    mysql_connect($dbhost,$dbuser,$dbpass);

    mysql_select_db($dbname);


    $query "SELECT * FROM meldeformular WHERE datum >= Current_Date()  ORDER by datum LIMIT 5 ";

    $result mysql_query($query);

    while (
    $line mysql_fetch_array($result)) { ?>

    <?php
    define
    ('_is_utf8_split',5000);

    function 
    is_utf8($line) { // v1.01
        
    if (strlen($line) > _is_utf8_split) {
            
    // Based on: http://mobile-website.mobi/php-utf8-vs-iso-8859-1-59
            
    for ($i=0,$s=_is_utf8_split,$j=ceil(strlen($line)/_is_utf8_split);$i $j;$i++,$s+=_is_utf8_split) {
                if (
    is_utf8(substr($string,$s,_is_utf8_split)))
                    return 
    true;
            }
            return 
    false;
        } else {
            
    // From http://w3.org/International/questions/qa-forms-utf-8.html
            
    return preg_match('%^(?:
                    [\x09\x0A\x0D\x20-\x7E]            # ASCII
                | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
                |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
                | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
                |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
                |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
                | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
                |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
            )*$%xs'
    $line);
        }
    }
    ?>

    <?php echo $line[regatta_name]; ?>

     <?PHP

    }

    mysql_free_result($result);

    mysql_close();

    ?>

    Die Abfrage ansich funktioniert, nur werden die Umlaute falsch dargestellt.
    Mit dem Code zum Kodieren erhalte ich folgende Fehlermeldung:

    1 Ergebnis aus Tabelle
    Fatal error: Cannot redeclare fixencoding() (previously declared in verzeichnis:22) in verzeichnis on line 22
    Diese Meldung hab ich schon bei mehreren Versuchen bekommen- also scheiterts andscheinend immer an der gleichen Stelle

    Vielen Dank schonmal!


  • #2
    Du versucht die Funktion/Methode fixencoding mehrmals zu deklarieren.
    Vermutlich liegt es daran dass du eine Datei mehrmals mit include einbindest.
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Hallo,

      meine Seite über die eingebunden wird sieht so aus:

      PHP-Code:
      <?php get_header();?>

      <div id="box">
      <div id="header">
      <? include ("headermenu.php"); ?> 
      </div>
      <div id="box1">

      </div>
      <div id="box2">

      </div>

      <div id="menu">
      <?php get_sidebar();?>
      </div>
      <div id="content">

      text

      </div>
      <div id="footer">
      <?php get_footer();?>
      </div>
      </body>
      </html>
      Sidebar ist die betroffene Datei und die ist nicht mehrmals eingebunden- in den anderen eingebundenen Seiten hab ich den Code noch nicht.

      Kommentar


      • #4
        Ich sehe in dem Codestückchen weder ein include, noch die Deklaration einer Funktion namens fixencoding(), also was genau zeigst du uns hier?
        Die Fehlermeldung passt nicht zum gezeigten Code...
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Deine Fehlermeldung kommt, weil Du Die Funktion innerhalb der while - Schleife deklarierst (Hast Du anscheinend umbenannt, richtig?!). Ein äußerst ungünstiger Ort. Packe die Funktionsdeklaration mal an den Anfang.

          Encodings kann man auch ganz gut mit der der PHP-Funktion iconv umwandeln.
          Es ist schon alles gesagt. Nur noch nicht von allen.

          Kommentar


          • #6
            http://www.php.de/adventskalender-20...perlative.html
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              http://www.php.de/php-einsteiger/464...verwenden.html!
              Dazu gehört auch, dass du dir zunächst mal selber klar machst, wo in etwa dein Problem denn nun eigentlich liegt.
              Das hier
              Mit dem Code zum Kodieren erhalte ich folgende Fehlermeldung:
              Fatal error: Cannot redeclare fixencoding() (previously declared in verzeichnis:22) in verzeichnis on line 22
              hat jedenfalls mit der im Titel erwähnten "UTF8 Kodierung" überhaupt nicht das geringste zu tun.

              Kommentar

              Lädt...
              X