Sonderzeichen ersetzen, die denselben ASCII-Wert haben

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

  • Sonderzeichen ersetzen, die denselben ASCII-Wert haben

    Hallo,

    nach einer notwendigen Umstellung auf UTF-8 habe ich nun Probleme mit einigen Sonderzeichen (bzw. sprachspezifischen Buchstaben), die sich im Quellcode befinden.

    Als Beispiel wären die Zeichen 'Ä' und 'Č' (C mit einem umgedrehten Zirkumflex) zu nennen. Beide haben den erweiterten ASCII-Wert 196 (zumindest laut ord('Ä') und ord('Č')).

    Die gesamte Ausgabe befindet sich in der Variable $seite. Nun möchte ich alle in $seite vorkommenden 'Ä' in '& Auml;' umwandeln (Leerzeichen ist aufgrund der Anzeige nur hier vorhanden). Also:
    PHP-Code:
    $seite str_replace('Ä''Ä'$seite); 
    Das Problem dabei ist nun, dass auch das 'Č' umgewandelt wird. Jedoch nicht in ein einfaches 'Ä', sondern in 'Ä�', bzw. als Quellcode-Ansicht in '& Auml;& #65533;' ... Was das zweite Zeichen genau darstellt, kann ich leider nicht sagen.

    Ob nun mit dem zweiten Zeichen oder ohne - der eigentliche Buchstabe (Č) ist nicht mehr vorhanden, sondern wurde kurzerhand in ein A Umlaut verwandelt.

    Gibt es hierfür Abhilfe? Eine Funktion bzw. Möglichkeit, wirklich nur das Zeichen zu ersetzen, das man ersetzen will? Mit ereg_replace() komme ich auf dasselbe Ergebnis.

    (Das händische Ersetzen der Umlaut-Zeichen im Quelltext selbst ist aufgrund einer Datenmenge von mehreren Hundert Dateien kaum machbar. Momentan arbeite ich mit PHP 5 auf Win, später läuft das jedoch unter PHP 4.1x auf Linux.)

    Vielen Dank schon im Vorraus,

    pb
    Zuletzt geändert von plastikbaum; 04.10.2006, 16:58.

  • #2
    ersetze doch in einem zweiten schritt:

    & #65533; in & #268; damit sollte die darstellung wieder stimmen...
    **********
    arkos
    **********

    Kommentar


    • #3
      versuch bei pregreplace auch modifer "u" zu setzen, damit es als utf8 erkannt wird beachte aber dass "u" klein sein muss.
      Slava
      bituniverse.com

      Kommentar


      • #4
        @arkos: Das wäre ein Zeichen. Es gibt aber viele Zeichen (die Seiten werden in insgesamt 17 Sprachen bestückt). Aber auch, wenn es nur eine Sprache wäre: Ich könnte zwar 65533 in 268 umwandeln - aber zuvor wurde ja schon mein Č in ein Ä umgewandelt

        @Slava: Da die Variable den gesamten HTML-Code beinhaltet, ist sie nicht UTF-8 - folglich lässt sich der u-Modifier nicht anwenden.

        Allgemein: Ich kann die Zeichen mit RegEx problemlos umwandeln. Jedoch werden dann Zeichen, die aus der Datenbank kommen (= UTF-8), in komische Doppelzeichen umgewandelt (A1/4 usw.)

        Kommentar


        • #5
          ist das nicht ein fall für htmlentities()

          Kommentar


          • #6
            Original geschrieben von plastikbaum
            [BAllgemein: Ich kann die Zeichen mit RegEx problemlos umwandeln. Jedoch werden dann Zeichen, die aus der Datenbank kommen (= UTF-8), in komische Doppelzeichen umgewandelt (A1/4 usw.) [/B]
            diese komische Zeichen kann man wunderbar sehen, wenn man natürlich
            ein passende header mit charset utf-8 sendet.
            Slava
            bituniverse.com

            Kommentar

            Lädt...
            X