Tim: Kollation swedish was bedeutet das?

Hallo, betrifft:MYSQL

Datenbank   Kollation

cdcol  latin1_general_ci
  information_schema  utf8_general_ci
  test  latin1_swedish_ci
  mysql  latin1_swedish_ci
  phpmyadmin  latin1_general_ci
  webauth  latin1_general_ci
  Insgesamt: 6 latin1_swedish_ci

das mit den Kollationen zu verstehen zu können habe ich mittlerweile sowieso schon aufgegeben, aber warum sind diese so unterschiedlich und wenn ich eine neue DB anlege per default latin1_swedish_ci, bin doch kein Schwede?

Wäre es nicht sinnvoller wenn alle die gleiche Kollation haben würden?

Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

Tim

  1. Hallo,

    Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

    konsequent auf UTF-8 umzustellen.

    Freundliche Grüße

    Vinzenz

    1. Hi,

      Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

      konsequent auf UTF-8 umzustellen.

      damit meinst du jetzt utf8_general_ci oder utf8_unicode_ci?

      Und was bedeutet das für mich mit meinen NON-UTF-8 Scripten und Seiten. Ich beschreib mal wie ein Dummy wie ich das sieht:

      *Nicht ernst nehmen überspitzte darstellung

      Irgendwas kommt in die DB, jetzt(wir kennen ja nur phpmyadmin) sind für unsereins tabellen mit inhalten da, wo auch alles schön drin steht. Was interessieren uns irgendwelche Kollationen, usw.? Ist doch egal ob UTF-8 oder latin1_general_ci, hat doch schliesslich auch früher bei alten phpmysql geklappt, bevor die so blöde fragen stellten. Welche Kollation, ha was weiss ich, egal werf ich halt mal ne Münze. Was denn nun wenn ich die DB auf UTF-8 (wo ist denn jetzt schon wieder der Unterschied unicode oder general) stelle und nutze dann auf einer ISO Webseite ein Formular, muss das Script dann die GET-Variable erst in UTF konvertieren um die DB zu durchsuchen, obwohl da steht es ja Müller mit ü drin egal was für ein Zeichensatz.

      Auch wenn ich mich jetzt unwissender anstelle als ich bin, trifft es das im Grunde, denn viel mehr weiss ich leider wirklich nicht dazu, brächte sowas wie Kinderlieratur dazu also so eine Art "WAS-ist-Was Mysql/Kollationen und warum PHPmyadmin keine Mysql ist"

      Tim

      1. Hallo,

        Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

        konsequent auf UTF-8 umzustellen.

        damit meinst du jetzt utf8_general_ci oder utf8_unicode_ci?

        nicht nur.

        Und was bedeutet das für mich mit meinen NON-UTF-8 Scripten und Seiten.

        auf UTF-8 umstellen. Jedes Skript, jede Seite, konsequent nur noch UTF-8.
        Ja, das ist Arbeit. Ja, diese Arbeit lohnt sich.

        Freundliche Grüße

        Vinzenz

      2. Hi,

        Und was bedeutet das für mich mit meinen NON-UTF-8 Scripten und Seiten.

        arbeite immer und überall nur und ausschließlich mit UTF. Beschränke Deine Wahlmöglichkeiten auf UTF-8 und UTF-16. Leugne, dass eventuell mal in irgendeinem Paralleluniversum theoretisch hätte etwas anderes existieren können. Lebe UTF.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. echo $begrüßung;

          Beschränke Deine Wahlmöglichkeiten auf UTF-8 und UTF-16.

          Wobei man für MySQL einschränken muss, dass UTF-16 (UCS-2) nicht für die Kommunikation von und zum Server verwendet werden kann. Die Feldkodierungen können hingegen UCS-2 sein.

          echo "$verabschiedung $name";

  2. Hi,

    das mit den Kollationen zu verstehen zu können habe ich mittlerweile sowieso schon aufgegeben, aber warum sind diese so unterschiedlich und wenn ich eine neue DB anlege per default latin1_swedish_ci, bin doch kein Schwede?

    MySQL "ist" aber Schwede.

    Wäre es nicht sinnvoller wenn alle die gleiche Kollation haben würden?

    Da koenntest du auch fragen, ob es nicht sinnvoller waere, wenn alle Menschen die gleiche Sprache sprechen wuerden.
    Antwort: Tja, tun sie aber nun mal nicht.

    Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

    Auch fuer den normalen deutschen Seitenbetreiber waere es sinnvoll, sich erst mal klar zu machen, was die Kollation ist und worauf sie sich auswirkt.

    Zitat http://dev.mysql.com/doc/refman/5.1/en/charset-configuration.html:
    "The collation determines how strings are sorted by the ORDER BY and GROUP BY clauses of the SELECT statement."

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  3. echo $begrüßung;

    Noch ein paar Restantworten:

    cdcol  latin1_general_ci

    Zunächst einmal besteht der Wert latin1_general_ci aus drei Teilen. Der erste ist die Kodierung, der zweite die Kollation und dazu gehört auch der dritte Teil, die case (in)sensitivity (Groß- Kleinschreibungsberücksichtigung).

    [...] aber warum sind diese [Kollationen] so unterschiedlich und wenn ich eine neue DB anlege per default latin1_swedish_ci, bin doch kein Schwede?

    Die anderen Datenbankersteller haben beim Anlegen eine Default-Kollationsangabe gemacht. Wenn du keinen entsprechenden Parameter im CREATE-Stetement angibst, wird ein (konfgurierbarer) System-Default-Wert verwendet. Kollationsangaben für das System, die Datenbanken und die Tabellen sind jeweils nur Default-Angaben, wenn für untergeordnete Elemente keine explizite Angabe gemacht wurde. Letzlich zählen nur die Angaben der einzelnen Felder, die durchaus auch unterschiedlich sein können. (Inwieweit das sinnvoll ist, muss im Einzelfall betrachtet werden.)

    Wäre es nicht sinnvoller wenn alle die gleiche Kollation haben würden?

    Nein, nicht in jedem Fall, da die Sortierregeln je Sprache und Anwendungsfall berücksichtigt werden müssen.

    Was ist für den normalen deutschen Betreiber am sinnvollsten, wenn auch mal ausländische Zeichen drin sein könnten, allerdings die Scripte und HTML Formulare nicht UTF-8 sind?

    Als Kollation musst du die nehmen, die deinen Bedürfnissen entspricht. Es gibt im Deutschen mindestens zwei Sortiersysteme. Die einzelnen Unterschiede findest du im Handbuchkapitel Character Sets and Collations That MySQL Supports.

    Die Kollation ist für die interne Datenverarbeitung (Sortierung, Vergleiche) wichtig. Für die Kommunikation mit Clients spielt auch noch die Kodierung (ohne Kollation, weil da nicht benötigt) auf der jeweiligen Verbindung eine wichtige Rolle. Die sollte nach jedem Verbindungsaufbau explizit ausgehandelt werden. Dafür gibt es die API-Funktion mysql_set_charachter_set(), für die es in den Umsetzungen der diversen Programmiersprachen Pendants geben sollte. Wenn nicht, ist hierzulande auch ein "SET NAMES"-Statement ausreichend. Wenn die Kodierung auf der Verbindung und die der einzelnen Felder nicht übereinstimmt, nimmt MySQL Umkodierungen vor. Das geht nicht von jeder in jede Kodierung verlustfrei, da ja nicht mit allen Kodierungen alle Zeichen darstellbar sind.

    Wenn deine Script "nicht UTF-8" sind, was sind sie dann? Vermutlich Latin1 (Windows-1252), denn eine Kodierung ist immer vorhanden. Du hast dann das Problem, diverse (vielleicht bei dir nur selten vorkommende) Zeichen nicht kodieren zu können, was zu unerwarteten Ergebnissen führen kann. UTF-8 (beziwhungsweise Unicode allgemein) ist dafür vorgesehen, diese Probleme zu lösen, verlangt aber einen einmaligen Umstellungsaufwand, der vielleicht zu Frust aber auch Erfahrungszuwachs führen kann.

    echo "$verabschiedung $name";