Sonderzeichen werden unterschiedlich dargestellt

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

  • Sonderzeichen werden unterschiedlich dargestellt

    Hallo,
    ich habe ein Problem bei dem ich nicht mehr weiter weiß.
    Ich parse einen rss feed mit simplepie
    und habe lokal Probleme bei der Ausgabe von Sonderzeichen
    auf meiner lokalen Entwicklungsumgebung wird folgendes ausgegeben
    Code:
    “thats only in da mornin’
    doch auf meinem server kommen die Zeichen korrekt raus
    Code:
    “thats only in da mornin’
    die skripte sind identisch.
    hat jmd. eine ahnung woran das liegen kann?
    (ich hatte mal das problem mit mysql und musste das charset auf dem server ändern, doch hier wird ja lediglich php verwendet)
    thx for help

  • #2
    Ja, auch da (bei PHP) gibt es Zeichensätze...

    Kommentar


    • #3
      deshalb habe ich auch die php.ini meines servers mit der lokalen verglichen und bei den charsets gibt es keine unterschiede

      Kommentar


      • #4
        Tja, hellsehen können wir hier leider nicht.

        Kommentar


        • #5
          also default charset ist nichts angegeben..
          was mir eben auffällt: auch über kommandozeile auf dem server werden mit meinem skript die falschen zeichen ausgegeben, wobei es im browser nachwievor funktioniert.

          @tobiaz: welche infos wären hilfreich?

          Kommentar


          • #6
            woher kommen die daten, wie werden sie verarbeitet, welchen Zeichensatz hatten sie vorher, welchen haben sie nachher, ...

            Kommentar


            • #7
              Naja, wenn du dir UTF-8 Daten in der ASCII-Konsole ansiehst, kommt halt sowas bei rum

              Kommentar


              • #8
                @tobiaz
                die daten kommen aus einem rss feed.
                (hier ein bsp. bei dem ich die überschrift falsch angezeigt bekomme
                http://hotbiscuits.wordpress.com/200...he-dodos-jodi/
                )
                The Dodos - “Jodi”

                verarbeitet wird das ganze mit simplepie und wird dann in eine db geschrieben.

                @PHP-Desaster
                ja das ist allerdings ein guter einwand. aber das erklärt nich warum auch in die db falsch geschrieben wird...

                danke für eure hilfe

                folgende fälle habe ich nun lokal getestet
                default_charset = "iso-8859-1"
                default_charset = "utf-8"
                default_charset = "none";

                und bei allen dreien bekommen ich nur kauderwelsch..
                der feed den ich parse kommt in utf-8. und trotz des charset utf-8 wird nicht korrekt dargestellt.
                Zuletzt geändert von iberican; 07.02.2008, 23:46.

                Kommentar


                • #9
                  also mittlerweile kann ich es wohl auf das skript reduzieren, denn ich habe nun unterschiedliche skripte wovon mir eines den korrekten code ausgibt.

                  das ursprüngliche skript

                  PHP-Code:
                  <?php

                  function microtime_float()
                  {
                      if (
                  version_compare(phpversion(), '5.0.0''>='))
                      {
                          return 
                  microtime(true);
                      }
                      else
                      {
                          list(
                  $usec$sec) = explode(' 'microtime());
                          return ((float) 
                  $usec + (float) $sec);
                      }
                  }

                  $start microtime_float();

                  include(
                  '../simplepie.inc');

                  // Parse it
                  $feed = new SimplePie();
                  if (!empty(
                  $_GET['feed']))
                  {
                      if (
                  get_magic_quotes_gpc())
                      {
                          
                  $_GET['feed'] = stripslashes($_GET['feed']);
                      }
                      
                  $feed->set_feed_url($_GET['feed']);
                      
                  $feed->init();
                  }
                  $feed->handle_content_type();
                  ?>
                  <html xmlns="http://www.w3.org/1999/xhtml">
                  <head>
                  <title><?php echo (empty($_GET['feed'])) ? 'SimplePie' 'SimplePie: ' $feed->get_title(); ?></title>
                  </head>
                  <body>
                      <h1><?php echo (empty($_GET['feed'])) ? 'SimplePie' 'SimplePie: ' $feed->get_title(); ?></h1>

                      <form action="" method="get" name="sp_form" id="sp_form">
                          <p><input type="text" name="feed" value="
                  <?php echo ($feed->subscribe_url()) ? htmlspecialchars($feed->subscribe_url()) : 'http://'?>
                  class="text" id="feed_input" />&nbsp;
                  <input type="submit" value="Read" class="button" /></p>
                      </form>

                      <div id="sp_results">
                          <?php if ($feed->data): ?>
                              <?php $items $feed->get_items(); ?>
                              <p align="center"><span style="background-color:#ffc;">Displaying 
                  <?php echo $feed->get_item_quantity(); ?> most recent entries.</span></p>
                              <?php foreach($items as $item): ?>
                                  <div class="chunk" style="padding:0 5px;">
                                      <h4><a href="<?php echo $item->get_permalink(); ?>">
                  <?php echo $item->get_title(); ?></a> <?php echo $item->get_date('j M Y'); ?></h4>
                                      
                  <?php echo $item->get_content(); ?>
                                      
                  <?php
                                      
                  if ($enclosure $item->get_enclosure(0))
                                          
                  echo 
                  '<p><a href="' $enclosure->get_link() . '" class="download">
                  <img src="./for_the_demo/mini_podcast.png" alt="Podcast" title="Download the Podcast" border="0" /></a></p>'
                  ;
                                      
                  ?>
                                  </div>
                              <?php endforeach; ?>
                              </div>
                          <?php endif; ?>
                      </div>

                      <div id="footer">
                          Powered by <?php echo SIMPLEPIE_LINKBACK?>, a product of 
                  <a href="http://www.skyzyx.com">Skyzyx Technologies</a>.<br />
                          Page created in <?php echo round(microtime_float()-$start3); ?> seconds.
                      </div>
                  </body>
                  </html>
                  das ganze skript habe ich nun auf das minimalste gekürzt
                  PHP-Code:
                  <?php
                  include('simplepie/simplepie.inc');
                  $feed = new SimplePie();
                  $dumpurl 'http://itsnotforthecock.dlpwd.co.uk/feed';

                  if (!empty(
                  $dumpurl))
                  {
                      if (
                  get_magic_quotes_gpc())
                      {
                          
                  $dumpurl stripslashes($dumpurl);
                      }
                      
                  $feed->set_feed_url($dumpurl);
                      
                  $feed->init();
                  }
                  $feed->handle_content_type();

                  //echo (empty($dumpurl));

                  echo $feed->get_title() . "<br>";
                  echo 
                  $feed->get_items();

                  echo 
                  var_dump($feed);

                  ?>
                  das witzige ist nun ich bekomme
                  echo $feed->get_title(); korrekt angezeigt aber,
                  echo $feed->get_items(); ist dagegen falsch.

                  meine gedanke war nun, dass wohl in simplepie. inc irgendwas bei get_items() passieren muss, was mir den zeichensatz verhagelt. doch die funktionen sind sehr ähnlich .

                  Vielen Dank für Anregungen


                  so nun habe ich folgende ergänzng gemacht

                  $feed->set_output_encoding('Windows-1252');
                  und es funktioniert.

                  ich will jedoch utf-8
                  was laut doku standardmäßig ausgegeben wird.
                  der fehler liegt wohl daran, dass ich in meinem html dokument diese zeile vergessen habe
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

                  ok schön und gut, aber das ist nur zum debuggen, das ganze wird in eine mysql db geschrieben, die auf utf-8 gestellt ist..

                  versucht habe ich nun folgendes


                  PHP-Code:
                  header('Content-Type: text/html; charset=utf-8'); 
                  doch das bringt nichts....
                  Zuletzt geändert von iberican; 08.02.2008, 13:59.

                  Kommentar


                  • #10
                    so gelöst
                    man sollte noch den zeichensatz in der php.ini auf utf-8 umstellen und es tut

                    Kommentar


                    • #11
                      leider habe ich mich zu früh gefreut. Nachdem ich einen weiteren Fehler ausfindig gemacht habe, indem ich die einzelnen Spalten der Tabelle auf utf8_general_ci statt utf8_unicode_ci gestellt habe werden mittlerweile Umlaute korrekt dargestellt, doch aber keine Anführungszeichen, diese erscheinen als Fragezeichen. Meine aktuelle Konfiguration

                      character set client utf8
                      character set connection utf8
                      character set database utf8
                      character set filesystem binary
                      character set results utf8
                      character set server utf8
                      character set system utf8
                      character sets dir /usr/share/mysql/charsets/
                      collation connection utf8_unicode_ci
                      (Globaler Wert) utf8_general_ci
                      collation database utf8_general_ci
                      collation server utf8_general_ci

                      auch in der php.ini des cli, die ich vermutlich verwende habe ich auf utf umgestellt.
                      php -f phpinfo.php | grep .ini gibt folgendes aus

                      Configuration File (php.ini) Path => /etc/php5/cli/php.ini
                      Scan this dir for additional .ini files => /etc/php5/cli/conf.d
                      additional .ini files parsed => /etc/php5/cli/conf.d/curl.ini,

                      Kollation der Tabelle
                      Kollation utf8_general_ci

                      Nun weiß ich absolut nicht mehr woran es liegen kann. Freue mich über Hilfe

                      Kommentar

                      Lädt...
                      X