PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was spielt die MySQL-Datenbank bei der Kodierung für ne Rolle?


mittelding
2009-06-15, 14:44:24
Hallo Forum,

Bisher habe ich meine MySQL-Tabellen in PHP per Query erstellt. Nun habe ich PHPmyAdmin zur Verfügung, mit welchem das ja komfortabler geht.
Dort kann man ja nun die Kollation einstellen, einmal bei jedem Feld der Tabelle, einmal darunter (wohl für die ganze Tabelle?).

Ich will meine Seite in UTF-8 umsetzen. Jetzt hat hier im forum mal jemand gesagt, dass die Kodierung der Seite selbst und das, was man in PHPmyAdmin einstellen kann, eh nichts miteinander zu tun hat. Schließlich wäre die DB nur ein Stream-Speicher und gibt alles so zurück, wie es reinkam.

1. Stimmt es, dass die Kollation für die ausgabe auf der Website also keine Rolle spielt?

2. Für was ist diese Kollation dann überhaupt gut? Hat das was damit zu tun, wie die Tabelle später beim sortieren vorgeht? Sprich A vs. a vs. Ä vs. ä ?

3. Welche Kollation würdet ihr für eine Seite empfehlen, auf der hauptsächlich deutschsprachige Artikel, allerdings auch ein paar fremdsprachige erscheinen sollen?
Die Seite selbst wird in UTF-8 umgesetzt.

Danke

Gast
2009-06-15, 16:13:34
http://dev.mysql.com/doc/refman/5.1/en/charset.html
Hauptsächlich beeinflusst es die Sortierung.
Wenn deine Seiten in UTF-8 ausgegeben werden, empfehl ich dir auch UTF-8 in der Datenbank zu verwenden.
Ansonsten hast du eventuell ein Problem mit POST Formularen wo die Browser die Info in UTF-8 verschicken, die Datenbank aber latin1 o.ä. erwartet.

Gast
2009-06-15, 17:35:19
grundsätzlich beeinflusst es alle string-funktionen, die du in mysql-queries verwendest.
verwende am besten für alles utf-8 und achte darauf, dass die mysql-verbindung in php auch im utf-8 modus läuft (gleich nach dem verbindungsaufbau "SET NAMES utf8" ausführen).

mittelding
2009-06-15, 18:14:38
Danke an die Gäste.
Es fragt sich nur welches UTF-8: unicode_ci, general_ci oder bin, um eine Sortierung nach "deutschen Regeln" zu erhalten.

Marscel
2009-06-15, 19:07:08
utf8_general_ci

Gast
2009-06-15, 19:17:35
utf8_general_ci
http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html
Nunja, wenn er will das ß = ss ist, so wie es offiziell definiert ist, sollte er utf8_unicode_ci nehmen.
Aber ist halt dafür ein bisschen langsamer.

mittelding
2009-06-15, 20:41:21
http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html
Nunja, wenn er will das ß = ss ist, so wie es offiziell definiert ist, sollte er utf8_unicode_ci nehmen.
Aber ist halt dafür ein bisschen langsamer.


Wäre dann A auch gleich Ä? Das soll natürlich nicht so sein, da ist das mit dem ß verschmerzbar

Gast
2009-06-15, 20:45:05
Von der Seite:
To further illustrate, the following equalities hold in both utf8_general_ci and utf8_unicode_ci (...):

Ä = A
Ö = O
Ü = U

Auf deutsch:
Bei beidem ist Ä = A

mittelding
2009-06-15, 21:01:09
Dann ist ein Apfel also Äpfel?
Das wäre aber doof :/

Marscel
2009-06-15, 21:54:30
Nein, das heißt, wenn du sortierst, kommt:

Apfel
Äpfel
Apfelwein