ich habe wiedermal ein Problem. Ich entwickel gerade für eine Türkische Stadtseite, ein kleines CMS. Das CMS läuft alles über MySQL. Leider funktionieren die Türkischen Zeichen nicht bei der Ausgabe, die werden einfach mit einem ? ersetzt.
Der Charset sollte eig. stimmen. Hier aber mal der Code:[PHP]
[/PHP]Im MySQL habe ich die Kollation als „latin5_turkish_ci“ bezeichnet. Ich habe das ganze auch mal ohne MySQL versucht. Einfach eine test.html Seite angelegt mit dem Design, dort das Zeichen hinzugefügt. Diesmal erscheint nicht ein Fragezeichen, sondern das ganz normale s, wenn ich ş machen will.
Wisst ihr villeicht weiter?
EDIT: Das ş wird automatisch als s bei PSPAD gespeichert, sehe ich gerade.
Das sind zu wenig informationen - aber die Kollation hat nichts mit der Darstellung zu tun. Soweit ich mich damit auskenne, würde ich an deiner Stelle auch eher mit utf-8 arbeiten, dann haste alles auf einmal.
hier gibts eine unicode-tabelle türkischer zeichen. das problem ist, dass textanwendungen standardmäßig nur ASCII kennen, also keine umlaute im deutschen und keine sonderzeichen anderer sprachen (deswegen wird deine eventuell vorhandene türkische tastatur auch nicht korrekt angezeigt werden). demnach muss maskiert werden. funktioniert jedoch nicht immer mit HTML direkt, manchmal gehts nur über unicode.
Edit: UTF-8 natürlich auch verwenden, dann gibts keine probleme beim anzeigen (struppi war aber schneller…)
wenn ich utf-8 verwende, funktionieren auch die deutschen Sonderzeichen nicht, wie z.B. ß, oder ö, ä und ü. Wenn ich ISO 8859-1 verwende, funktioniert alles, bis halt auf die Türkischen Zeichen, genau so wie bei ISO 8859-9, was ja eig. für Türkisch bestimmt ist, was ja auch meistens klappt.
Eine Türkische Tastatur verwende ich nicht, das mit dem Unicode ist ja auch okey und gut.
Aber beim Usersystem, wo sich Besucher registrieren können, wäre es blöd wenn man die Türkischen Zeichen sperrt, da in vielen Vor- und Nachnamen diese Zeichen zu finden sind.
Auf gut Deutsch gesagt, das wird nur zu Fehlern kommen. Sagen wir mal ich selber habe mich registriert, alles klappt wunderbar, bis die Fehlermeldung beim Login kommt „Benutzername falsch!“. Da ich glaube, dass er die Türkische Zeichen beim hinzufügen in die Datenbank abändert oder beim Check ob die Daten übereinstimmen. Weiß es aber nicht.
und wenn du alles zweisprachig machst?
türkisch verwendet UTF und deutsch ISO und jedesmal, wenn ein sprachenwechsel bevorsteht, tauschst du die encoding-zeile dynamisch aus?
Natürlich funktionieren deutsche Umlaute mit utf, so wie du es beschreibst wirst du immer Probleme bekommen wenn du nur mit einem kleinem Zeichensatz arbeitest.
Utf-8 klappt ja auch leider nicht bei türkisch :S. Sonst hätte ich mir irgendeinen Skript programmiert. Türkisch klappt bei keinem. Deutsch klappt nur bei utf-8 nicht.
@ struppi: Ich weiß, aber bei dem funktionierts halt nicht :S Ich habe ja auch nicht behauptet das utf-8 nicht bei allen webseiten funktioniert, sondern zurzeit nur auf meiner neuen.
werden jetzt die zeichen nicht richtig angezeigt, oder spinnt die datenbank, weil sie irgendwas umwandeln will?
dann gäbe es nämlich - zugegeben aufwändige - methoden, scripte zu verfassen, die zwischen deutschen und türkischen zeichen separieren und sie dementsprechend maskieren.
Edit: ich habs jetzt versucht, unter deutschem ISO-satz die türkischen zeichen einzubringen, es funktioniert tadellos (hätte mich auch gewundert, da ich ab und an kroatische sonderzeichen für den ISO 8859-9 verwende) und das ganze ist auch valide…also da muss bei dir irgendwas fehschlagen.
Ich kann mich nur wiederholen - ohne utf-8 kommst du nicht weiter du machst es dir nur unnötig kompliziert.
z.b. wenn du sagst, es ist in der Datenbank so wie es sein soll, wäre es interessant gewesen in welcher Kodierung du dir die Datenbank betrachtest - wenn es mit phpmyAdmin ist, ist es i.d.R. in utf-8.
Die Daten in der Datenbank sind in ISO, wenn du alles umstellen würdest, bräuchtest du nur einen Zeichensatz für alles. Du musst aber natürlich auch die Daten in utf-8 umwandeln.
Naja, die Zeichen auf deiner Seite sind in ISO kodiert, deine Seite sagt aber sie solen in utf dargestellt werden, deshalb die Fragezeichen. Du musst nun die Zeichen in der Datenbank in utf umwandeln. Dann ist alles i.O.
Auf der Seite die du uns gezeigt hattest waren ISO kodierte Zeichen, d.h. du hast irgendwo, entweder in der Datenbank oder sie werden in deinem Skript umgewandelt, noch Zeichen mit dem falschen Zeichensatz.
Wie die Umwandlung der DB funktioniert hatte ich dir per PN gezeigt, wenn es bei dir nicht funktioniert hat, dann machst du etwas falsch. Es läßt sich aber von hier aus nicht sagen, was es ist. Solange du auf deiner UTF-8 kodierten Seite noch Fragezeichen statt Umlaute siehst, solange läuft irgendwo etwas falsch.
Mach doch einfach mal eine Testseite, die nur einen einfachen PHP Code enthält, der einfach nur einen Datensatz (mit Sonderzeichen) holt und diesen darstellt.
Ich habe heute sehr viele Türkischen Internetseiten angeschaut. Einfach „Radio“ z.B. bei Google eingegeben und durch die Suche rumgeklickt.
Bei allen Seiten die ich bis jetzt gesehen habe, hatten im Queltext:[PHP] // Viele
// Einige[/PHP]„utf-8“ habe ich gar nicht gesehen.
Ich habe heute mein charset wieder mal auf „iso-8859-9“ geändernt, hier klappen immer noch die z.B. Umlaute öäü.
Aber irgendetwas ist hier komisch, den wie ich gerade gesehen habe funktionieren die Buchstaben(die fett, unterstrichen und kursiv sind) Ş ş İ ı Ğ ğ Ç ç.
Ş ş İ ı Ğ ğ Ç ç = ? ? ? ? ? ? Ç ç
So sieht das ganze aus bei der Ausgabe. Ich find das irgendwie komisch warum die beiden „C“ funktionieren und die anderen nicht.