mysql, dump und Umlaute

Dieses Thema im Forum "Hardware" wurde erstellt von pnoom, 18. September 2002.

  1. pnoom

    pnoom New Member

    Hallo,

    vor dem Jaguar-Clean-Install habe ich einen dump meiner zum Teil recht unfangreichen Datenbanken erstellt, bei denen jetzt nach dem Wiedereinlesen alle Umlaute und andere Sonderzeichen falsch sind (z.B. wird aus ü ein Y mit zwei Punkten drüber). Da das Terminal keine Sonderzeichen mag, habe ich diese mit phpMyAdmin eingegeben, mit dem ich auch den dump erstellt und zurückimportiert habe. Ich vermute, daß es etwas mit der Zeichensatzkodierung zu tun hat und habe auch schon etwas herumprobiert, der einzige Erfolg waren aber andere komische Zeichen als vorher.
    Kennt hier jemand eine Möglichkeit, die Umlaute zurückzubringen?

    pnoom
     
  2. mats

    mats New Member

    Werden die Datenbankinhalte in einem Browser dargestellt? Dann solltest du die Umlaute (und andere Sonderzeichen) mit <TT>&amp;uuml;</TT> maskieren.

    Sonst weiss ich auch nix...
    (Vielleicht mal in der PHPAdmin-Anleitung suchen)
     
  3. pnoom

    pnoom New Member

    Ja, die Datenbanken schau ich mir im Browser an, hätte ich vielleicht dazu sagen sollen. Die Umlaute maskieren werde ich mal versuchen, schön einfach und deshalb habe ich wohl noch nicht dran gedacht.

    pnoom
     
  4. waaser

    waaser New Member

    das einfachste ist den dump ueber phpMyadmin als zip oder gzip
    via browser zu sichern,

    in dem dann runtergeladenen text-file sind die sonderzeichen richtig kodiert, (win/dos-codiert)
    was also bedeutet, das du auf mac sie halt als wirre zeichen siehst.
    was aber richtig ist.

    wenn du dann diesen dump wieder mit phpMyAdmin importierst in eine andere datenbank stimmen die umlaute,wenn du dir sie wieder via php anzeigen laesst. man kann dann auch nach ihnen suchen, was nicht geht, wenn du sonderziechen in der html-codierung importierst.
    dann muesstet du immer mit "&uuml;ber" nach dem wort "über" suchen, was einwenig anstregend ist.

    wenn du dir den dump als text ueber phpMyAdmin im broswer hast anzeigen lassen und dann als text runtergesichert hast, hast du natürlich mac-kodierte sonderziechen. was aber auch kein problem ist.
    du brauchst nur ein tool das die sonderzeichen wieder in windows format kodiert. und dann diesen dump wieder importieren.
     
  5. mats

    mats New Member

    ...sind die sonderzeichen richtig kodiert, (win/dos-codiert) was also bedeutet, das du auf mac sie halt als wirre zeichen siehst...

    das Wort "richtig" ist ziemlich relativ. Ich meine die DOS-Codierung ist falsch! Apple hat sich immerhin an den Standard gehalten, als es um die Erweiterung der ASCII-Tabelle ging. MS nicht!
     
  6. mats

    mats New Member

    Das Problem ist, dass gewisse Browser, wenn sie den Inhalt eines Feldes in einem Formularfeld anzeigen, aus den maskierten (codierten) Umlauten wieder normale machen. Wenn man dann die Formulardaten wieder abschickt, wird der Eintrag in der Datenbank wieder mit den uncodierten Umlauten gespeichert. Ich habe einmal folgende Funktion für PHP geschrieben. Sie übernimmt einen String, codiert die deutschen Umlaute (auch die wirren Zeichen) und gibt einen neuen String zurück. Lässt sich natürlich für weitere Zeichen erweitern.

    <TT>

    function sonderzeichen_weg($string) {
    $_trans = array( "ä" =&gt; "&amp;auml;",
    "ö" =&gt; "&amp;ouml;",
    "ü" =&gt; "&amp;uuml;",
    "Ä" =&gt; "&amp;Auml;",
    "Ö" =&gt; "&amp;Ouml;",
    "Ü" =&gt; "&amp;Uuml;"
    "0" =&gt; "&amp;auml;",
    "Æ" =&gt; "&amp;ouml;",
    "¸" =&gt; "&amp;uuml;",
    "’" =&gt; "&amp;Auml;",
    "÷" =&gt; "&amp;Ouml;",
    "9" =&gt; "&amp;Uuml;"
    );
    $_newstring=strtr($string, $_trans);
    return $_newstring;
    }

    </TT>

    Wenn du alle Strings da durchlaufen lässt, bevor sie in die Datenbank geschrieben werden, ist das Problem weg.
     
  7. waaser

    waaser New Member

    also was jetzt ansich die richtige kodierung wäre, ist in dem fall wurscht.
    er möchte doch bloss, dass zeichen, die nicht zum 7 bit ascicode gehören, richtig dargestellt werden, und dazu muessen text-files, die in mysql importiert werden sollen halt windows-codiert sein.
    dann passt das wieder.
     
  8. pnoom

    pnoom New Member

    Den dump habe ich wie oben beschrieben im Browser angezeigt und als Text gesichert, also mac-sodiert. Heute abend kann ich mal versuchen, ob es funktioniert, wenn ich den dump in die Windows-kodierung ändere.

    pnoom
     
  9. pnoom

    pnoom New Member

    Die Maskierung hat nichts gebracht, da dies mit der php-Funktion htmlentities schon erledigt wird. Zeichenketten mit maskierten Umlauten werden dann so angezeigt, wie sie eingetippt wurden.
     
  10. pnoom

    pnoom New Member

    Die Windows-Kodierung war die Lösung, jetzt kann ich mich wieder an deutschen Umlauten und allerlei anderen Sonderzeichen erfreuen. Danke.

    pnoom
     

Diese Seite empfehlen