Probleme mit Sonderzeichen

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

  • Probleme mit Sonderzeichen

    Hallo Leute,
    ich hab ein ziemliches Problem bei der Abfrage einer Paradox-Db; und zwar bekomme ich anstatt Straße ->StraŻe, Stärke->Stőrke.
    Ich wollte es ja eigentlich mit ereg_replace machen, aber anstatt den verstümmelten "Z" (Suchwert) nimmt er hier das originale und kann so natürlich auch nicht das richtige finden.
    Gibt es noch irgend eine andere Möglichkeit wie ich die Sonderzeichen richtig ausgeben lassen kann???

    Danke schonmal

  • #2
    check mal die zeichentabelle. hast du die richtige verwendet?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Was meinst du mit Zeichentabelle; und wo solle die stehen???

      Kommentar


      • #4
        keine ahnung *gg*

        aber irgendwo muss was sein, wo definiert ist/wird, die die DB ihre daten liefert oder sie erwartet.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Das einzigste was man einstellen kann sind die ODBC-Einstellungen; da hab ich auch schon die "Sortierreihenfolge" von ASCII auf Internaltional umgestellt, aber mehr gibt es da auch nicht....
          Aber irgendwie muss das ja funzen; schließlich wird die Datenbank ja noch von anderen Progs genutz, bei den alle Zeichen ordentlich ausgegeben werden....

          Kommentar


          • #6
            So ich habs jetzt nochmal mit ereg_replace probiert; und zwar hab ich als Suchstring den Ascii Code eingegeben und das jeweilige Zeichen.....

            PHP-Code:
            $bezeichnung="ő";
            echo(
            "Vorher:$bezeichnung<br>");

            if(
            eregi("[ő]",$bezeichnung))
            {
               
            $bezeichnung=ereg_replace("ő]","ä",$bezeichnung);
               echo(
            "Nachher: $bezeichnung<br>");

            den Ascii-Code scheint er ja zu finden, aber er ändert es trotzdem nicht in das gewünschte zeichen....

            Kommentar


            • #7
              Hallo Baumschule1234

              Klappt das Ersetzen mit der Funktion chr() ?

              schließlich wird die Datenbank ja noch von anderen Progs genutz, bei den alle Zeichen ordentlich ausgegeben werden....
              Das kommt auf den ODBC an.
              Bei dBase denkt Excel hartnäckig, die Daten sind im alten DOS-Format und
              wandelt sie um obwohl eine Windows-Codepage verwendet wird.
              Was dann 'rauskommt ist gar keine richtige Codepage mehr...

              Kommentar


              • #8
                Also, hatte einen Fehler; so klappt es ....

                $bezeichnung="ő";
                echo("Vorher:$bezeichnung<br>");

                if(eregi("ő",$bezeichnung))
                {
                $bezeichnung=ereg_replace("ő","ä",$bezeichnung);
                echo("Nachher: $bezeichnung<br>");
                }

                Das Problem ist jedoch, das mein Script das gewünschte Zeichen nur bei selbst definierten Variablen findet; bekommt die Variable den Wert der Datenbank, findet es das zeichen nicht.....
                z.B. anstatt eines "ä" macht er das hier: "ő"; das Zeichen entspricht normalerweise nen Code "ő".

                Es wird aber nicht gefunden......

                Kommentar


                • #9
                  Hallo!
                  Gibt auch ord() den gleichen ASCII-Integer aus?

                  Kommentar


                  • #10
                    ord() erkennt das Zeichen überhaupt nicht..... es gibt immer nur den Wert 38 aus; was dem "&" entspricht. (Bei fast jeden Sonderzeichen)

                    Warum erkennt ereg_replace das Zeichen 337 (ő) nicht.....
                    Wenn ich mit die Variable selber definiere und ihr den Wert gebe, wird es von ereg_replace erkannt....Und bei dem Wert der DB nicht...
                    Die Zeichen sind doch nun völlig identisch.....

                    Kommentar


                    • #11
                      Komische Sache.
                      Schau' mal im Browser auf "Quelltext", vielleicht ist es gar nicht als ASCII-Code in der DB (Stichwort & nbsp; ) oder es sind noch Sonderzeichen 'drin.

                      Kommentar


                      • #12
                        Noch 'was anderes:
                        Kannst Du Dir vielleicht einen anderen ODBC zulegen?
                        Die Einstellmöglichkeiten von Deinem sind geradezu lächerlich.
                        Hab' gerade 'mal in der BDE nachgeschaut (native Paradox Treiber),
                        Da gibt's mindestens 100 Einträge unter LANGDRIVER.

                        Leider ist die BDE kein ODBC...

                        Kommentar


                        • #13
                          Was hast du für ein System laufen; bei mir (Nt 4.0) hab ich leider nur den einen Paradox-Treiber..... also am Treiber kann ich bei mir nichts mehr einstellen.......

                          Kommentar


                          • #14
                            Hallo!
                            Das hängt nicht vom OS ab sondern von den Programmen.
                            Hab' noch ein Paradox-ODBC von INTERSOLV, der kam über die BDE 'rein.
                            Vielleicht schaust Du 'mal bei Corel (so weit ich weiss gehört Paradox jetzt Corel).
                            Ansonsten sollte es eigentlich auch mit chr() und ord() gehen.
                            Hast Du 'mal geschaut ob vermüllte Sonderzeichen wirklich nur als 1 Zeichen kommen?

                            Kommentar

                            Lädt...
                            X