utf8 Umcodierung von Binärdaten

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

  • utf8 Umcodierung von Binärdaten

    Hallo,

    ich mache einen File Upload von Textdateien, lese den Inhalt in eine Variable und schreibe ihn in eine MySQL Tabelle (Longblob). Die Kollation der Tabelle ist utf8_general_ci.

    Wenn ich nun den Inhalt des Longblob wieder auslese und per Download dem User zur Verfügung stelle, sind Umlaute etc. durch Fragezeichen ersetzt.

    Kann es sein, dass die Datenbank den - binären - Inhalt utf8 codiert zur Verfügung stellt?

  • #2
    ich mache einen File Upload von Textdateien, lese den Inhalt in eine Variable und schreibe ihn in eine MySQL Tabelle (Longblob).
    Was soll der Quatsch denn?

    Kann es sein, dass die Datenbank den - binären - Inhalt utf8 codiert zur Verfügung stellt?
    Von alleine macht sie das ssicher nicht. Aber wenn du schon von der Sortierung nach utf8 sprichts, könnte es gut sein, dass der Zeichensatz auch so eingestellt ist. Das solltest du als erstes mal überprüfen. Und natürlich auch den Zeichensatz der Verbindung.

    Ist auch nicht das Erste Thema zum utf8-"Problem".

    Kommentar


    • #3
      Ich nehme den Longblob, weil ich neben Textdateien auch Worddateien, OpenOffice-Dateien etc. zum Upload und zur Speicherung zulassen möchte. Diese Infotypen kann ich ja wohl nicht in ein varchar schreiben.

      Ich spreche nicht von Sortierung nach utf8, sondern davon, dass die DB den binären Inhalt eines Feldes offensichtlich in utf8 umcodiert.

      Kommentar


      • #4
        Weil UTF-8 ja auch ein Binärzeichensatz ist, oder warum nimmst du das an?
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Ich habe die Tabelle jetzt mit

          ALTER TABLE xxx CONVERT TO CHARACTER SET 'latin1' COLLATE 'latin1_general-ci' und den DEFAULT CHARACTER SET per ALTER TABLE ebenfalls auf latin1 umgestellt.

          Ferner habe ich nach dem Aufbau der Verbindung zur DB per
          PHP-Code:
          $dbh->exec("SET NAMES 'latin1' ");
          $dbh->exec("SET CHARACTER SET latin1"); 
          dafür gesorgt, dass auch die Verbindung auf latin1 gesetzt ist.

          Trotzdem stehen nach dem Download Fragezeichen statt der Umlaute in der Datei. Irgendwo muss PHP oder die DB also den Inhalt der Datei manipulieren.

          Ich komme nicht dahinter, wo das sein könnte.

          Kommentar


          • #6
            Hast du DB zwischenzeitlich gelöscht und neue Daten Hochgeladen? Als was werden deine Webseiten ausgeliefert?

            Kommentar


            • #7
              Gelöscht habe ich sie nicht, nur geändert und neue Daten reingeladen.

              Im phpMyAdmin kann ich sehen dass die Kollation auf latin1_general_ci steht, die Änderung also durchgeführt wurde.

              Meine Webseiten werden in utf8 ausgeliefert.

              Kommentar

              Lädt...
              X