Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonderzeichen – wird nicht erkannt.

Einklappen

Neue Werbung 2019

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

  • Sonderzeichen – wird nicht erkannt.

    Bei mir wird dass Sonderzeichen " – ". es macht ein -

    Der Text inhalt[1]:

    Besondere technische Möglichkeiten erfordern besondere Maßnahmen – auch kosmetischer Art.

    str_replace('–', 'zzzz',$inhalt[1])

    erkennt dass Zeichen nicht utf8_decode macht ein ? draus und "htmlspechialcars" habe ich schon angewendet.


  • #2
    Wo kommt der String her? Direkt aus der Datei? Du sendest offenbar nicht den korrekten Zeichensatz. Mit "â€" zu arbeiten ist allerdings Quatsch, denn das sollte vermutlich nur ein Zeichen sein. (Das passiert wenn du dein Ausgangsstring einen Multibyte-Zeichensatz (z.B. UTF- verwendest, du aber einen Single-Byte-Zeichensatz an den Browser sendest.)

    Kommentar


    • #3
      Also die Daten kommen von einer Datenbank:

      Werden verarbeitet:
      PHP-Code:
      $newphrase str_replace('„''"'$zeile->post_content);
      $newphrase str_replace('“''"'$newphrase );
      $newphrase =strip_tags ($newphrase);
      $newphrase htmlspecialchars($newphrase);
      $newphrase =strip_tags ($newphrase);
      'content' => utf8_for_xml($newphrase),

      function 
      utf8_for_xml($string)
      {
          return 
      preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u'' '$string);

      und dann in einer XML Datei gespeichert.

      Dort mit einem zweiten Script ausgelesen und mit utf8_decoded


      In einem anderen Script wird die XML datei ausgelesen und vorgendermaßen verarbeitet.

      Kommentar


      • #4
        Ich fasse mal so zusammen: x-mal preg_replace + utf8_decode/encode anstelle konsequent mit UTF-8 zu arbeiten.
        Da ist es schwer, noch etwas gerade zu biegen. Du solltest schauen, mit welcher Codierung die Daten aus der Datenbank kommen. Dafür kannst die diese Hilfsfunktion benutzen:
        PHP-Code:
        function strToHex2($str) {
            return 
        '\x'.rtrim(chunk_split(strtoupper(bin2hex($str)),2,'\x'),'\x');

        Gib damit eine kurze Zeichenkette aus der Datenbank aus, welches dein spezielles - enthält und poste es hier.
        PHP-Klassen auf github

        Kommentar


        • #5
          Dan bekomme ich folgende Ausgabe was sagt dier mir jetzt über das UTF_8:

          Kommentar


          • #6
            in der Datenbank hat es die Kodierung:

            PHP-Code:
            utf8_general_ci 

            Kommentar


            • #7
              Setze das Encoding für die Verbindung zur Datenbank auch auf UTF-8. Speichere deine .php-Dateien als UTF-8 und setze den HTTP-Header auch auf UTF-8. Dann sollte alles klappen.
              GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

              Kommentar

              Lädt...
              X