php..charset..html..problem

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

  • php..charset..html..problem

    Hallo Leute,

    ich habe ein kleines (verständnis) Problem mit der Verarbeitung des charsets...

    habe das folgende index.php script:

    PHP-Code:
    <?php  require_once("template.php");
                
    $page = new Page("main.html");
                
    $page->select_content($_GET['id']);
                
    $page->output(); 
    ?>
    und dass template.php script:
    PHP-Code:
    <?php
    class Page {
                        var 
    $page;
        function 
    Page($template
        {
            if (
    file_exists($template))
                
    $this->page join(""file($template));
              else
                die(
    "Template file $template not found.");        
        }

        function 
    replace_tags($tags = array()) 
        {
            if (
    sizeof($tags) > 0)
                foreach (
    $tags as $tag => $data
            {
                    
    $data = (file_exists($data)) ? join(""file($data)) : $data;
                          
    $this->page eregi_replace("{" $tag "}"$data,  $this->page);
                }
              else
                die(
    "XXX");    
        }    

        function 
    select_content($site
        {        
            if (
    $site == 'content1')
            {    
                
    $data = (file_exists("content1.html")) ? join(""file("content1.html")) : $data;;
                
    $this->page eregi_replace("{content}"$data$this->page);
            }
            else if (
    $site == 'content2')
            {    
                
    $data = (file_exists("content2.html")) ? join(""file("content2.html")) : $data;;
                
    $this->page eregi_replace("{content}"$data$this->page);
            }
            else if (
    $site == 'content3')
            {
                
    $data = (file_exists("content3.html")) ? join(""file("content3.html")) : $data;;
                
    $this->page eregi_replace("{content}"$data$this->page);
            }
            else if (
    $site == 'content4')
            {
                
    $data = (file_exists("content4.html")) ? join(""file("content4.html")) : $data;;
                
    $this->page eregi_replace("{content}"$data$this->page);
            }
            else
            {
                
    $data = (file_exists("content.html")) ? join(""file("content.html")) : $data;;
                
    $this->page eregi_replace("{content}"$data$this->page);
            }
        }

        function 
    output() 
        {
            
              echo 
    $this->page;
        }

    }
    ?>
    was tue ich?

    die main.html enthält den üblichen html-kramms und im menü die links für die bestimmten content bereiche... ach ja und den auszutauschenden bereich {content}... siehe function select_content...

    nun das problem:

    habe im main.html den meta-tag

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    und die umlaute werden richtig angezeigt, wenn ich die html ohne php in den browser hole...

    ziehe ich jedoch die main.html und die content.html (enthält nur eine tabelle mit inhalt) über meine scripte, werden die umlaute mit � verkleidet...

    verstehe ich nicht so ganz, weil ich dachte, dass mein script nur das html zusammenklatscht und der browser das encoding übernimmt...

    würde mich freuen, wenn mir jemand etwas licht geben könnte

    danke

    Kald
    Zuletzt geändert von kald; 22.06.2006, 11:21.

  • #2
    Sorry, aber den Code schau ich mir erst an, wenn du ihn in PHP-Tags gepackt hast - ich mag es bunt ...

    Zum Problem: Die meisten Browser richten sich lieber nach den HTTP-Headern als den Metatags. Vermutlich sendet dein Webserver einen Content-Type-Header. Mit http://web-sniffer.net/ kannst du das leicht herausfinden.
    Dann lass dein Script dies übernehmen -> header('Content-Type: text/html;charset=...');

    Kommentar


    • #3
      Die meisten Browser richten sich lieber nach den HTTP-Headern als den Metatags.
      Wenn Dir jemand auf Kisuaheli erklärt, dass er nur Kisuaheli spricht, wird Dir das herzlich wenig bringen
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        danke euch für die schnellen antworten...

        Sorry, aber den Code schau ich mir erst an, wenn du ihn in PHP-Tags gepackt hast - ich mag es bunt ...
        ok, bitte, hast recht, sieht netter aus...

        gut, zur sache...

        habe es mit dem header versucht und diesen wie folgt eingepflanzt:

        PHP-Code:
        <?php

        header
        ('Content-Type: text/html;charset=utf-8');

        require_once(
        "template.php");

        $page = new Page("main.html");

        $page->select_content($_GET['id']);

        $page->output();

        ?>
        aber dies hatte keinerlei auswirkung... habe mir auch die server conf angesehen und da ist alles io...

        folgender test...

        PHP-Code:
        <?php
        header
        ('Content-Type: text/html;charset=utf-8');

        echo (
        'äöü');
        ?>
        ..ergab auch nur

        ���

        ok, vielleicht hab ich den header an der falschen stelle eingesetzt oder gar falsch, aber wo anderst bekomme ich stets eine fehlermeldung... auch im template.php das gleiche..

        keine ahnung was ich noch machen kann...bitte um hilfe

        danke

        kald

        Kommentar


        • #5
          Original geschrieben von kald
          folgender test...
          PHP-Code:
          <?php
          header
          ('Content-Type: text/html;charset=utf-8');

          echo (
          'äöü');
          ?>
          ..ergab auch nur

          ���
          Hast du diese Testdatei denn auch in der Kodierung UTF-8 abgespeichert?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hast du diese Testdatei denn auch in der Kodierung UTF-8 abgespeichert?
            ich komme aus dem lachen nicht mehr raus... ja, das war das problem... danke für den hinweis

            gruß kald

            Kommentar

            Lädt...
            X