Komische Zeichen

Ich habe jetzt diesen Code von Balmung nach dem charset eingetragen also so

$link = mysql_connect($host, $user, $pass); mysql_select_db($db, $link); header('Content-Type: text/html; charset=utf-8'); mysql_set_charset('utf8');

und jetzt sind diese Fragenzeichensymbole wieder da -.- . Verzeiht mir das ich so gereizt klinge… ich bin euch sehr dankbar das ihr mir hilft, aber es ist auch für mich und für euch frustrierend das es einfach nicht geht. Ich habe dann diesen header-code unter den mysql_set gemacht, aber verändert hat sich nichts… diese Symbole von anfang sind wieder da
http://www.fincayra-tales.de.ms/
(Nur auf firefox sichtbar)
Bin dann nochmal auf den Validator gegangen und dann stand Encodin Utf8 aber trotzdem sind diese Zeichen da O_O langsam habe ich das Gefühl die Utf8 ist nicht die richtige… was meint ihr dazu?

Deine Seite ist korrekt als UTF-8 markiert.
Diese Fragezeichen erscheinen nur dann, wenn man einen Text, der NICHT utf-8 kodiert ist, mit einer utf-8 Angabe versieht. Also man sagt dem Browser, es handelt sich um utf-8, ist es aber in Wirklichkeit gar nicht. Deshalb zeigt der Browser an den fehlerhaften Stellen diese Fragezeichen an.

Kann es sein, dass der Text, der die Fragezeichen enthält gar nicht in der MySQL Datenbank liegt, sondern statisch in einer Datei (html oder php Datei) geschrieben ist? Wenn das der Fall ist, solltest du noch mal sicher gehen, dass alle Dateien von deinem Editor ebenfalls als UTF-8 (ohne BOM (Byte Order Mark)) gespeichert werden.
Jeder etwas bessere Text-Editor sollte dazu in der Lage sein.

gruß Balmung

Teils ja teils nein. Jedenfalls die Startseite mit den News ist mit der Datenbank verbunden, der php code ist aber in einer php datei… aber der News text wird auf eine Tabelle in der phpmyadmin abgespeichert… und die Tabelle ist auf UTF 8
Wie speichere ich dies als UTF8 denn ab… ich besitze nur den normalen Standarteditor… und weiß leider nicht wie dies geht.

Es fällt mir allgemein schwer eure Erklärungen zu verstehen… liegt wahrscheinlich daran, dass ich davon kaum Ahnung habe seufz

Hast du Windows? Textdateien in UTF-8 bekommst du z.B. in Notepad++. Dort öffnest du die Datei, und änderst die Kodierung per Kodierung → Konvertiere zu UTF-8 (ohne BOM) zu UTF-8. Anschließend speicehrst du die Datei wieder ab.
Weitere Editoren, die UTF-8 ohne BOM unterstützen sind notepad2, ultraedit, scite, …

Wie kann ich es so einstellen, das die Dateien also die phps nicht von meinem Standarteditor gelesen sondern gleich zum Notepad ++ übergehen… denn immer andauernd hin und her zu schaukeln ist echt doof
ach übrigens immer wenn ich es wieder abspeichere hochlade und nochmal auf notpade gehe ist es wieder auf ANSI
Was mache ich den falsch oder muss ich die datei anderst abspeichern?

[quote=“Annis6”]ach übrigens immer wenn ich es wieder abspeichere hochlade und nochmal auf notpade gehe ist es wieder auf ANSI
Was mache ich den falsch oder muss ich die datei anderst abspeichern?[/quote]
Die englischen Zeichen haben in ANSI und UTF-8 die selbe Darstellung. Wenn du also keine Umlaute hast, kann notepad++ die Darstellung nicht unterscheiden und das normale Winodws-Notepad kann UTF-8 ohne BOM gar nicht. Solange du keine Umlaute hast, ist das egal, wenn Umlaute vorhanden sind, erkennt notepad++ es korrekt.

Die Dateitypzurodnung lässt sich z.B. ändern, indem du notepad++ startest (bei Vista+7 dazu einmal “als Administrator ausführen”) und dann Einstellungen -> Optionen -> Dateiverküpfungen öffnen. Hier unter “web(html) skript” php auswählen und in die rechte Liste verschieben und dann schließen und notepad++ beenden.

Also ich nimm eine php datei kovertiere sie auf UTF 8 ohne BOM und speichere sie ab bevor ich sie auf den server hochlade… aber wenn ich datei erneut öffne ist sie wieder auf ANSI! Soll dies so sein? Weil wenn ja würde das Kovertieren nichts bringen da alle daten auf ANSI umgestellt sind. Jedenfalls die Zeichen sind immer noch da.

Das liegt daran, weil UTF-8, wenn keine Umlaute oder ähnliches in den Dateien vorhanden sind, genau so ausschaut wie ANSI. Notepad++ (und auch kein anderer Editor) kann dann wirklich unterscheiden was es ist.

Am besten du gehst auf:
Einstellungen -> Optionen
wählst dort den Reiter „Dateien“ aus
und setzt denn die Option Kodierung auf UTF-8 Ohne BOM. (und den haken direkt darunter)
Danach sollten ANSI Dateien immer Automatisch als UTF-8 erkannt werden und neue Dateien werden ebenfalls als UTF-8 gespeichert.

Hab alles auf UTF8 ohne BOM gestellt der header code ist auch drin und trotzdem verschwinden die Zeichen nicht. Irgendetwas ist nicht richtig… oder UTF8 ist nicht die richtige Einstellung.
Irgendetwas mache ich da verkehrt… fragt mich aber nicht was.

Kopfkratz

Auf einigen Seiten scheint es auch in Ordnung zu sein und auf anderen nicht.
Ich vermute mal du bindest das Menü auch per include oder require ein? Hast du dann auch die PHP Datei für das Menü (und andere Seiten, die du per include/require einbindest) auf UTF-8 gestellt?

Sonst bin ich recht ratlos

Edit: Ich sehe gerade, du hast ja auch ein paar HTML Seiten. Bei denen würde ein PHP Befehl natürlich nichts bringen. Dafür bräuchte man dann doch “.htaccess” (oder die Kodierung wird direkt per meta-tag in die HTML Seite geschrieben)

Alternativ:
Ich glaube, jetzt wäre es doch einfacher, wenn wir einfach alles auf latin1 umstellen.
Geh am besten in die db.php und stell mysql_set_charset auf “latin1” und den Befehl mit dem header() ebenfalls auf “text/html; charset=latin1”. Die Datenbanken und Tabellen selbst brauchst du nicht umzustellen.
Und im Notepad++ wäre es dann vllt auch Sinnvoll die Kodierung umzustellen. Statt UTF-8 nutzt du dann einfach unter den Einstellungen die Option ganz unten (unter UCS2 Little Endian), und wählst dort ISO-8859-1 aus, was nur ein anderer Name für latin1 ist.
(Im Menü Kodierung findest du den Zeichensatz unter: Zeichensatz -> Westeuropäisch).

UTF-8 wäre die meiner Meinung nach bessere Lösung, da diese auch Problemlos mit Japanischen Zeichen klarkommt, falls du jemals solche verwenden möchtest.

Edit 2:
Eine andere Möglichkeit wäre, wenn ich, oder jemand anderes der sich auskennt und dem du genug vertrauen schenkst, schaut es sich mal an indem du die Zugangsdaten zum FTP per PN schickst.

mfg Balmung

[size=85]Edit 3:
ich stelle gerade fest, dass jemand mit ähnlichen interessen bei mir eindeutig besser behandelt wird, als jemand der z.b. ne seite über gangsterrap oder so’n uninteressanten schmarrn machen würd[/size]

Das mag sein weil da dieser header code nicht drin ist… das ist der knackpunkt… denn sobald ich diesen Header code einfüge kommt das Ganze.

Verzeihung das ich es euch echt nicht leicht mache…

Ja habe ich alles auf UTF8 gestellt und ist mit der db.php immer Verbunden…
Ok ich werde erstmal möglichkeit 1 probieren und alles auf latin 1 umstellen…
Wenn es dann noch immer nicht funktioniert, werde ich dir eine PN schreiben. Vielleicht findest du den Fehler und kannst auch gleich mitteilen, was ich da falsch gemacht habe.

Wenn ich diese datei z.b. auf UCS2 Litztle Endian kovertiere und dann auf Zeichensatz Westeuropäisch auf ISO-8859-1 gehe kommt da folgede anmerkung

You should save the current modification. All the saved modifactions can not be undone. Continue?

Soll dies so sein?

Edit: Ich habe es umgestellt und hab fast ein Herzkasper bekommen als ich die japanischen Zeichen sah… dann habe ich sofort zurückgestellt da dies furchbar aussah.

Du sollst es auch nicht auf UCS2 stellen. einfach direkt von utf-8 auf iso-8859-1 ^^