Sonderzeichen werden nicht ausgegeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sonderzeichen werden nicht ausgegeben

    Hallo Leute,

    heute muss ich euch mal wieder mit dem leidigen Thema "Sonderzeichen in UTF-8" auf die Pelle rücken.

    Kunden kopieren Texte z.B. aus Word heraus und speichern diese per Eingabemaske in die DB (utf8_general_ci).
    Nun möchte ich aus den gesammelten Daten eine XML-Datei erstellen.
    Dieses wird mit der Funktion fopen($path.$datei, "a+") erstellt.
    Sowol die Datei, welche die XML erstellt, als auch die XML selber ist UTF-8.

    Umlaute und Sonderzeichen werden einfach ignoriert.
    Ich habe es auch schon mit mb_convert_encoding probiert - dies liefert zwar die richtigen Umlaute - gibt mir aber die Sonderzeichen nicht aus.

    Ach ja ... durch das Kopieren aus Word heraus werden sonderzeichen wie " ’ „ “ oder Langstriche" eingebunden.

    Wie bekomme ich nun all diese Zeichen in meiner XML-Datei ausgegeben?

    Ich wäre um jede schnelle Hilfe dankbar, denn die XML-Datei soll an die Druckerei geliefert werden und morgen ist einsendeschluss. :(

    LG KMD
  • tja, leider gibt es Zeichen außerhalb von UTF8 ;) Deswegen haben TinyMCE & Co spezielle Einfügebutton für Word.

    Aber welche Zeichen fehlen die denn jetzt konkret? Abgefahrene Anführungszeichen? Umlaute sollten schon funktionieren - ansonsten hast du "richtige" Encoding Probleme.
    Welches Encoding hat denn deine Webseite wo die Eingabe stattfindet? Hoffentlich auch utf8, oder? Denn man könnte theoretisch auch ISO Daten in utf8 speichern - MySQL macht schließlich keine Typkonvertierung.
    Wenn du es auf einer ISO Seite darstellst, würdest du es nicht mal merken. Falsch ist es trotzdem.

    Kurz: Gibt es irgendwo eine Stelle die nicht explizit utf8 anwendet? Apache Webserver, Meta Angabe, ...
    Mehr Informationen im Wiki: [wiki]Unicode und PHP <= 5[/wiki]
  • Ja, ist alles UTF-8.

    Die Umlaute werden jetzt auch in der XML-Datei dargestellt aber die Word-Sonderzeichen nicht.
    Besser gesagt... Öffne ich die Datei in einem text-Editor, dann erscheinen die Sonderzeichen - öffne ich diese in einem HTML-Editor (z.B. Dreamweaver) erscheinen die Sonderzeichen als Kästchen.

    Bei der Ausgabe der XML-Datei über den Browser spuckt er natürlich eine Fehlermeldung aus (Im Textinhalt wurde ein ungültiges Zeichen gefunden. Fehler beim Bearbeiten der Ressource). Allerdings erscheint der Fehler bei einem Umlaut und nicht wie zu erwartend an einem diese Sonderzeichen. Ich raffs echt nicht mehr! grrrr
  • Versuch das Problem mal zu zerlegen. Datei speichern ist schon zu viel.
    Was ist wenn du den Inhalt der XML direkt im Browser ausgibst? Mit korretem content-type Header und Encoding.

    Ich denke wirklich, dass an irgendeiner Stelle nicht konsistent utf8 verwendet wird ;)
    Interessant auch diese Diskussion.. php-resource.de/forum/showthread/t-97835.html -> hier ist das Problem irgendwann verschwunden ;)
  • Hi d0nut,

    jetzt schlägst du bestimmt die Händer über dem Kopf zusammen... :)
    Ich habe nun einen mb_convert_encoding in 'windows-1252' machen müssen da die Daten an dei Druckerei raus mussten.
    Die Druckereich bearbeitet die Daten wohl mit einem Windows-Programm weiter und es gab daher auch keine Probleme.

    Ich werde mich dem Problem aber trotzdem noch mal annehmen.

    LG KMD