• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Türkische Zeichen

Wie du siehst funktioniert es hier im Forum -> utf-8

Wenn viele türkische Seiten einen anderen Zeichensatz verwenden, liegt es vermutlich daran, dass es ihnen egal ist, ob diese Seiten überall dargestellt werden können oder nicht. Denn du kannst nicht davon ausgehen, dass jeder Browser auf der Welt windows installiert hat oder einen türkischen Zeichensatz installiert. utf ist dagegen universal und hat in den letzten Jahren eine so große Verbreitung gefunden, dass du, wenn du mit exotischen Zeichen arbeitest, nichts anderes verwenden solltest. Zumal wenn, wie es bei dir der Fall ist, mehrere unterscheidliche Zeichensätze in's Spiel kommen.
 
Werbung:
Wie du siehst funktioniert es hier im Forum -> utf-8

Wenn viele türkische Seiten einen anderen Zeichensatz verwenden, liegt es vermutlich daran, dass es ihnen egal ist, ob diese Seiten überall dargestellt werden können oder nicht. Denn du kannst nicht davon ausgehen, dass jeder Browser auf der Welt windows installiert hat oder einen türkischen Zeichensatz installiert. utf ist dagegen universal und hat in den letzten Jahren eine so große Verbreitung gefunden, dass du, wenn du mit exotischen Zeichen arbeitest, nichts anderes verwenden solltest. Zumal wenn, wie es bei dir der Fall ist, mehrere unterscheidliche Zeichensätze in's Spiel kommen.

Aso Danke für den Hinweis sozusagen :D
Aber weißt du villeicht warum die 2 Türkischen Sonderzeichen funktionieren? :?
 
Die beiden Zeichen kommen auch im Französischen vor und sind deshalb sicherlich in den meisten europäischen Zeichensätzen enthalten.

Ich kann struppi nur beipflichten: Die durchgängige Verwendung von UTF-8 ist die Lösung aller Probleme mit Zeichensätzen und Kodierungen.
 
Werbung:
Die beiden Zeichen kommen auch im Französischen vor und sind deshalb sicherlich in den meisten europäischen Zeichensätzen enthalten.

Ich kann struppi nur beipflichten: Die durchgängige Verwendung von UTF-8 ist die Lösung aller Probleme mit Zeichensätzen und Kodierungen.

Ah das kann stimmen. Danke für den Hinweis. Aber hab was neues gehöhrt, undzwar muss ich z.B. "utf8_tuurkish_ci" per PHP abrufen lassen. Könnte das stimmen? Wenn ja wie geht das? Ich hab ganz ehrlich zum erstenmal davon was gehört.

Yusuf
 
Das scheint eine Datenbank-Collation zu sein (lässt sich in phpMyAdmin pro Tabelle oder sogar per Spalte angeben). Was genau utf8_tuurkish_ci verändert, müsste ich mir auch anlesen. Der Standard ist in der Regel utf8_general_ci. Wikipedia erklärt recht anschaulich, was eine Collation bewirkt: Collation - Wikipedia, the free encyclopedia. Ich würde davon ausgehen, dass es dabei hauptsächlich um sprachspezifische Feinheiten wie "ö soll hinter o einsortiert werden" geht. Das utf8_* klingt jedenfalls richtig, das sollte klappen.

Wenn du durchgängig UTF-8 verwenden willst, was, wie bestimmt bereits erwähnt, zu empfehlen ist, sollten die Datenbankfelder in einer utf8_*-Collation vorliegen, die Datenbankverbindung sollte auf UTF-8 stehen und die ausgegebene HTML-Datei sollte als UTF-8 ausgeliefert werden. (Siehe etwa hier die Abschnitte "PHP" und "MySQL". Vor allem bei "PHP" gilt: Im Zweifel den header() hinzufügen, <meta>-charset-Angaben sind nicht zuverlässig. Das tatsächliche Encoding einer Seite lässt sich im Firefox per "Rechtsklick->View page info" ermitteln.)

Ich weiß nicht, wie hilfreich diese doch eher abstrakten Angaben für deinen konkreten Fall sind. Es ist sicher nicht ganz leicht, das "aus dem Nichts" passend auf ein bestehendes Projekt mit bereits definierten Zeichensätzen zu übertragen.
 
Hallo,

danke das war mir schon hilfreich :). Ich hab jetzt alles verbessert. Nur wie funktioniert das hiermit?
PHP:
<?php
mysql_set_charset('utf8'); // mysql ab PHP5.2.3
$mysqli->set_charset('utf8'); //mysqli ab PHP5.2.3
mysql_query("SET NAMES `utf8`"); // veraltet
?>
Wo muss ich das ganze einfügen? Einfach in die index.php? :?

Und mir wurde mal das hier gegeben.
PHP:
    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET 'utf8'");
    mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");
Edit: Hab das ganze in die Index.php eingefügt und jetzt gehts :) Danke euch :D
 
Zuletzt bearbeitet:
Werbung:
Edit: Auch gut. :)

Das kommt ganz darauf an, wie du normalerweise deine DB-Verbindung aufbaust und welche PHP-Version du nutzt. Du brauchst nur einen Befehl davon, vermutlich den obersten, wenn du nicht mysqli nutzt.

Vermutlich so (ungetestet, Demo von php.net leicht angepasst):

PHP:
<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Not connected : ' . mysql_error());
}

mysql_set_charset('utf8', $link);

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}
 
Zuletzt bearbeitet:
Hallo danke,

ich habs mal versuch geht nicht. Habe die letzten 3:
PHP:
    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET 'utf8'");
    mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");
probiert, mit denen geht es. Die anderen brauche ich auch nicht.

Das das jetzt funktioniert hat mich zum erstaunen gebracht, ich dachte anfangs immer das "utf-8" auf gut Deutsch gesagt: *****ße ist, aber es ist genau das gegenteil. Hab immer mit ISO gearbeitet :)
 
Zurück
Oben