Problem mit Umlauten

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

  • Problem mit Umlauten

    Hallo,

    Ich benutze MYSQL 5.0 und PHP 4.4.4

    Mein Problem ist folgendes:

    Wenn ich ein in meine Datenbank soetwas wie " Übung macht den Meister" abspeicher und per PHP lade, werden die Umlaute nur als "?" dargestellt. In dem Fall z.B. "?bung macht den Meister".

    Der Text in der Datenbank ist richtig. Wenn ich normal ein Umlaut im PHP schreibe wird es auch richtig angezeigt!

    Ich gebe den text mit echo wieder, zeile[5] ist der geladene Text aus MySQL:

    <?php
    $_dertext =$zeile[5];
    echo " <p style='word-spacing: 0; line-height: 150%; text-indent: 0; margin: 0' align='left'><b><font color='#000080' face='Verdana' size='3'>Übung</font></b><font color='#000080' size='2' face='Verdana'><br>
    $_dertext
    </font></p>";
    ?>

    Das komische ist nur, "Übung" wird richtig angezeigt, doch Umlaute in $_dertext nicht....

    Mir ist bewusst das ich auch $_dertext=htmlentities($zeile[5]);
    benutzen kann, doch das möchte ich nicht, weil ich im Text auch sachen dick schreiben will("<b>Übung</b> macht den Meister") und solche Spielereien würden dann ja auch nicht funktionieren.

    Wenn mir jemand Rat geben kann wäre ich äußerst Dankbar!!!!

    Vielen dank das du dir Zeit genommen hast über mein Problem nachzudenken.

    MfG Zit.

  • #2
    was für einen zeichensatz hat die tabelle, welcher die php-seite?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Ich benutze den Default Zeichensatz. Der heißt glaub ich irgendwie Iso- und dann eine Nummer, wie er genau heißt weis ich leider nicht.

      Das Problem ist halt, ich brauche einen Zeichensatz der ä,ü und ö richtig darstellt und das die Html Befehle nicht in einen String Umwandelt(<b>....), so dass ich diese noch benutzen kann.

      Kommentar


      • #4
        Hi,

        wenn ich dich richtig verstanden habe, werden die Umlaute bei der Ausgabe in deinem Browser nicht korrekt dargestellt. Das hat dann nichts mit dem Zeichensatz der DB zu tun sondern dem eingestellten Zeichensatz deines Content-Types (in der HTML Ausgabe).

        Ist dieser auf UTF-8 gestellt, werden Umlaute als ? dargestellt. Bastel dir doch ne Funktion, die die Umlaute durch entieties ersetzt. Und du dann eben "&amp;Uuml;bung macht den Meister" in der Datenbank stehen hast.

        Grüße,
        gen

        Kommentar


        • #5
          Original geschrieben von gen
          Ist dieser auf UTF-8 gestellt, werden Umlaute als ? dargestellt.
          Warum sollten sie?
          Auch in UTF-8 kann man problemlos Umlaute darstellen.
          Bastel dir doch ne Funktion, die die Umlaute durch entieties ersetzt. Und du dann eben "&amp;Uuml;bung macht den Meister" in der Datenbank stehen hast.
          Nein, das wäre grßer Unfug, vermutlich nahe am größtmöglichen.


          Schlicht und einfach eine eindeutige Entscheidung für eine Kodierung treffen - und diese dann überall und konsequent anwenden.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            Schlicht und einfach eine eindeutige Entscheidung für eine Kodierung treffen - und diese dann überall und konsequent anwenden.
            Text: " <b> Übung </b> macht den Meister"

            Welche Kodierung wandelt den z.B. diesen Text so um, dass die Umlaute ersetzt werden und den HTML Code so lassen?

            Dieses Forum funktioniert doch anscheinen auch so, das ich meinen Text mit HTML CODE editieren kann, und trozdem Umlaute benutzen kann.

            Was mir bisher auch nicht klar ist, wieso wird das "ä", dass ich aus der Datenbank hole zum "?", und das "ä", dass ich einfach in den Quellcode geschrieben hab nicht(es bleibt also ein ä)?

            Kommentar


            • #7
              Original geschrieben von Zitrus
              Text: " <b> Übung </b> macht den Meister"

              Welche Kodierung wandelt den z.B. diesen Text so um, dass die Umlaute ersetzt werden und den HTML Code so lassen?
              Vollkommen falsche Fragestellung ...

              Zeichenkodierungen wandeln nichts "um", sie bilden nur etwas ab.

              Dieses Forum funktioniert doch anscheinen auch so, das ich meinen Text mit HTML CODE editieren kann, und trozdem Umlaute benutzen kann.
              Ja natürlich - du klingst immer noch so, als ob du das für etwas besonderes, und nicht für das normalste der Welt hältst ...?
              Was mir bisher auch nicht klar ist, wieso wird das "ä", dass ich aus der Datenbank hole zum "?", und das "ä", dass ich einfach in den Quellcode geschrieben hab nicht(es bleibt also ein ä)?
              Weil du nicht an allen Stellen die gleiche Zeichenkodierung verwendet hast, sondern lustig zwischen verschiedenen hin- und herspringst.


              Und so, wie beispielsweise die Wörter "alter" oder "kind" im Englischen etwas anderes bedeuten als im Deutschen, so bedeuten auch das oder die Bytes, die in der einen Zeichenkodierung ein 'ä' darstellen, in einer anderen womöglich etwas anderes ...


              Mal ein paar Threads aus dem SELFFORUM, die sich auf ähnliche Probleme beziehen (teilweise auf UTF-8 bezogen, aber es geht ja um das prinzipielle):
              http://forum.de.selfhtml.org/archiv/...24629/#m803336
              http://forum.de.selfhtml.org/archiv/...29189/#m835211
              http://forum.de.selfhtml.org/archiv/...27940/#m825991

              Das muss nicht unbedingt gleich dein Problem lösen - aber es vermittelt ein Grundverständnis dafür, was überhaupt zu beachten ist, und an welchen Stellen überall die Zeichenkodierung eine Rolle spielen kann.
              Und dieses Grundverständnis ist absolut essentiell, um sich so einem Problem widmen zu können.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Vielen Dank für deine Links

                Vorallen war dieser hier sehr interessant, da er exakt mein Problem schildert.

                Leider hab ich die Antwort nicht verstanden. Es wäre erfreulich wenn jemand diese mir erklären könnte.

                Danke,
                Zuletzt geändert von Zitrus; 04.09.2006, 16:42.

                Kommentar


                • #9
                  Original geschrieben von wahsaga
                  Warum sollten sie?
                  Auch in UTF-8 kann man problemlos Umlaute darstellen.
                  Ich spreche hier aus der Erfahrung, dass in meiner MySQL DB UTF-8 eingestellt ist, ich in der Ausgabe Doctype XHTML 1.0 Transitional Charset UTF-8. Wenn ich der Datenbank Umlaute stehen hab und diese z.B. in ein Newsscript lade, werden sie als "?" dargestellt.
                  Deswegen muss ich entweder vor der Eingabe in die Datenbank oder vor der Ausgabe im HTML die Sonderzeichen in die jeweiligen Entieties umwandeln.

                  Original geschrieben von wahsaga

                  Nein, das wäre grßer Unfug, vermutlich nahe am größtmöglichen.
                  Wie gesagt bei mir führt der "Unfug" zur Lösung, aber elegant ist es.

                  @Zitrus: Ich versteh dein Problem leider nicht wirklich. Stelle sowohl in der MySQL DB, <i>als auch</i> in der Tabelle, im Tabellenfeld <i>und</i> in der HTML Ausgabe den selben Zeichensatz ein. Dann sollte es funktionieren normalerweise.

                  Grüße,
                  gen
                  Zuletzt geändert von gen; 04.09.2006, 18:58.

                  Kommentar


                  • #10
                    Original geschrieben von gen
                    Ich spreche hier aus der Erfahrung, dass in meiner MySQL DB UTF-8 eingestellt ist, ich in der Ausgabe Doctype XHTML 1.0 Transitional Charset UTF-8. Wenn ich der Datenbank Umlaute stehen hab und diese z.B. in ein Newsscript lade, werden sie als "?" dargestellt.
                    Dann wird dein Newscript wohl nicht als UTF-8 ausgeliefert.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von gen
                      Wie gesagt bei mir führt der "Unfug" zur Lösung, aber elegant ist es.
                      nein, vollkommen unelegant ... im Endeffekt braucht man Sonderzeichen gar nicht zu Entities verwandeln, einzig bei speziellen Zeichen (<> etc.) lohnt es sich. Wenn du also in deinem Code schon HTML hast, kannst du den, bei korrekter Zeichenkodierung, so ausgeben wie er in der DB steht

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Original geschrieben von ghostgambler
                        nein, vollkommen unelegant ... im Endeffekt braucht man Sonderzeichen gar nicht zu Entities verwandeln, einzig bei speziellen Zeichen (<> etc.) lohnt es sich. Wenn du also in deinem Code schon HTML hast, kannst du den, bei korrekter Zeichenkodierung, so ausgeben wie er in der DB steht
                        Haha tut mir leid ich wollte unelegant schreiben, mir is klar dass da irgendwas nicht richtig funktioniert und das nur eine Notlösung ist. Wenn überall der selbe Charset angegeben wurde muss es ja klappen.

                        Grüße,
                        gen

                        PS: Sorry für Missverständnis ^^

                        Kommentar

                        Lädt...
                        X