Shadowman Geschrieben 25. Mai 2013 Teilen Geschrieben 25. Mai 2013 Zuerst mal sorry, falls es diese Frage schon öfter gab, aber ich habe bei der Suche wohl nicht die richtigen Suchwörter erwischt. Ich habe das Problem, dass ich in meiner Datenbank in ein Feld vom Typ utf8_general_ci einen Text mit Sonderzeichen speichern möchte (Beispielsweise "Köln"). In der Datenbank habe ich jetzt diesen Text so eingestellt, dass dort das ö steht, jedoch bekomme ich bei der Ausgabe nur einen viereckigen Kasten angezeigt. Beim einschreiben per Web-Formular werden anstatt einem ö auch nur 2 merkwürdige Zeichen eingespeichert. Ich bin jetzt soweit gekommen, dass es irgendwas mit den Datentypen auf sich hat, aber leider hatte ich solche Probleme bisher noch nie, daher bin ich ziemlich Ratlos. Falls jemand zur Lösung des Problems noch Informationen benötigt, schreibt einfach, was ihr braucht. Falls der Datentyp der PHP Dateien benötigt wird, bräuchte ich zusätzlich eine kleine Hilfestellung, wo ich den auslesen kann. Gruß Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 25. Mai 2013 Teilen Geschrieben 25. Mai 2013 Wenn du folgendes beachtest, kann nichts schief gehen: - Die Datei selbst muss in UTF-8 gespeichert sein (auch Dateien, die du per PHP includierst!) - Sicherstellen, dass der Browser die Datei als UTF-8 empfängt und Daten (Formulareingaben) in UTF-8 sendet. Dazu entweder den Metatag "Content-Type" setzen oder per .htaccess ein Default-Type setzen. Also: - Datenbank - Datei - Browser müssen alle UTF-8 "sprechen", dann gibt es kein Problem. Es bringt zB nichts, wenn man Umlaute in PhpMyAdmin per Hand in einem UTF-8 Datenbank ändert, wenn PhpMyAdmin auf ISO-8859 läuft. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 25. Mai 2013 Autor Teilen Geschrieben 25. Mai 2013 Auf der Seite habe ich die ganze Zeit schon das hier gehabt: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> In der Datenbank haben alle Tabellen die Kollation utf8_general_ci, sowie alle Text-Felder innerhalb der einzelnen Tabellen. Des Weiteren ist der MySQL-Zeichensatz: (utf8). Also kann es jetzt nur noch daran liegen, dass die PHP Dateien wahrscheinlich nicht in UTF-8 gespeichert sind, richtig? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 25. Mai 2013 Autor Teilen Geschrieben 25. Mai 2013 Sorry für den Doppelpost, aber trotz Konvertierung gab es keine Besserung: Auszug aus dem dargestellten Quelltext: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href="css/style.css" type="text/css" media="all" /> </head> <body> ? <table id="header">[/PHP] An der Stelle wo das "?" steht, steht in der Datei testweise ein "ö" So langsam verzweifle ich, was ich noch ändern könnte. Gruß Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 So langsam verzweifle ich, was ich noch ändern könnte. Änder die Datei im Editor auf UTF-8 und gebe das Ö neu ein. Dann sollte es gehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 27. Mai 2013 Autor Teilen Geschrieben 27. Mai 2013 Ok, das hat funktioniert. In meinem Editor kann UTF-8 nicht dargestellt werden, weswegen anfangs immer merkwürdige Zeichen standen. Nachdem ich diese gelöscht hatte, war dann das Problem wieder da. Ich habe mir jetzt einen anderen Editor gezogen, welcher leider nur Shareware ist. Kennst du einen guten Freeware Editor mit Syntax Highlighting? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sas86ks Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 Notepad ++ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 27. Mai 2013 Autor Teilen Geschrieben 27. Mai 2013 (bearbeitet) Nachdem ich jetzt alles umgestellt habe funktionieren an den meisten Stellen Sonderzeichen und ich muss sie nicht mehr durch ä etc. ersetzen. Jedoch habe ich jetzt auf der Startseite folgende Meldung: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /test.php:1) in /test.php on line 4 Das sind die ersten 4 Zeilen der test.php: <?php include('classes/user.class.php'); session_start();[/PHP] Ich habe schon versucht das Include (was zwingend notwendig ist) testweise rauszunehmen, jedoch schafft dies keine abhilfe. Laut Quelltext besteht das Problem darin, dass 2 Leerzeichen gesendet werden, was aber in keiner Datei steht. Des Weiteren besteht immer noch das Problem, dass die Daten, die aus der Datenbank gelesen werden immer noch falsch Dargestellt werden. Ich hoffe, dass dieses Problem noch irgendwie gelöst werden kann. Ganz ehrlich, solche Probleme hatte ich bisher noch nie und es ist ziemlich nervig Bearbeitet 27. Mai 2013 von Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 Enthält deine PHP-Datei möglicherweise ein BOM? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 27. Mai 2013 Autor Teilen Geschrieben 27. Mai 2013 (bearbeitet) Ok, darauf habe ich nicht geachtet. Ich habe alle Dateien in UTF-8 konvertiert und nicht UTF-8 ohne BOM. Ich werde also nochmal alles konvertieren. Das Session Problem konnte dadurch schon gelöst werden, daher danke klotzkopp Nur leider bleibt das Problem mit den Sonderzeichen, die aus der Datenbank ausgelesen werden. Die Sonderzeichen werden weiterhin als � angezeigt Bearbeitet 27. Mai 2013 von Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 28. Mai 2013 Autor Teilen Geschrieben 28. Mai 2013 Es gibt wieder was neues: Nachdem ich <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> aus der Seite entfernt habe, werden alle Sonderzeichen korrekt angezeigt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
spix Geschrieben 28. Mai 2013 Teilen Geschrieben 28. Mai 2013 Vielleicht hilft das: MySQL PHP Umlaute/Sonderzeichen fixen UTF-8/ISO | Web / Mobile Blog Berlin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 28. Mai 2013 Autor Teilen Geschrieben 28. Mai 2013 Nein leider nicht, diese Seite hatte ich schon gefunden und mit mb_detect_encoding gesehen, dass meine Strings schon in UTF-8 codiert sind. Trotzdem vielen dank fürs raussuchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
4ipok Geschrieben 20. September 2013 Teilen Geschrieben 20. September 2013 Versuch mal in PHP nach session_startheader("Content-Type: text/html; charset=utf-8"); einfügen und schau unter umständen bei MySQL connection ob bei übertragung UTF-8 Zeichensatz steht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.