AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [MySQL] Welche Kollation soll ich wählen?
Thema durchsuchen
Ansicht
Themen-Optionen

[MySQL] Welche Kollation soll ich wählen?

Ein Thema von TheMiller · begonnen am 8. Jul 2008 · letzter Beitrag vom 10. Jul 2008
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

[MySQL] Welche Kollation soll ich wählen?

  Alt 8. Jul 2008, 12:33
Tach!

Ich möchte mich gerade mal mit Kollationen befassen, weil ich sie bisher immer außer Acht gelassen habe. Ich selbst benutze immer "latin1_german1_ci", PHPMyAdmin legt aber automatisch immer "Utf8-general-ci" an.

Wäre nett, wenn ihr mich kurz ein bissl über Kollationen aufklären würdet und ein paar Worte zu diesen zwei speziellen Kollationen verlieren könntet!

Danke im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 8. Jul 2008, 13:08
Mit Kollationen wird die Sortierreihenfolge von String-Feldern anhand der Zeichenkodierung festgelegt. Näheres dazu siehe hier. Dabei steht das ci für case-insenstive, aber das hast Du Dir wahrscheinlich schon gedacht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 8. Jul 2008, 13:23
Hm... und welche Kollation ist jetzt besser / richtiger? utf8, latin1_de oder eine ganz andere?

Das mit dem ci habe ich gestern herausgefunden
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#4

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 8. Jul 2008, 13:48
Es gibt kein richtig oder falsch.. wäre eine der Möglichkeiten "falsch", wäre sie wohl gar nicht drin
Es kommt eben auf die Anwendung an. Für eine Sortierung die auch deutsche Sonderzeichen (Umlaute, Scharf-S etc.) korrekt (also z.B. so wie im Telefonbuch) verwertet, brauchst du eine der latin1_de-Kollationen. Mehr dazu steht aber im MySQL-Handbuch
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 10. Jul 2008, 09:10
Und wenn du Wert darauf legst, dass deine Anwendung Unicode-faehig ist (was bspw. in PHP durchaus PITA sein kann) dann solltest du nen utf8-Zeichensatz verwenden, wie z.B. utf8_general_ci

Die Standardcollation kannst du z.B. in der my.ini festlegen, die Standardcollation fuer eine Datenbank oder eine Tabelle setzt du beim Erstellen der Datenbank oder Tabelle. Nichts destotrotz kannst du auch Zeichensaetze mischen:
SQL-Code:
CREATE TABLE `foobar` (
  `foo` VARCHAR(255) COLLATE latin1_german1_ci NOT NULL,
  `bar` VARCHAR(255) COLLATE utf8_general_ci NOT NULL
);
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 10. Jul 2008, 10:04
Hm... das Mischen von Zeichensätzen brauche ich nicht. Ob ich Unicode brauche wird sich noch rausstellen - obwohl es ja durchaus nicht verkehrt ist, gleich utf-8 zu nehmen... man weis ja nie, was noch kommt.

Was bedeutet dieser Halbsatz, insb. "PITA" ?

Zitat von alcaeus:
was bspw. in PHP durchaus PITA sein kann
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 10. Jul 2008, 10:56
PITA = Pain in the Ass.

Bedeutet dass du nur Funktionen verwenden darfst, die auch mit Multibyte-Zeichensaetzen klarkommen. UTF-8 unterstuetzt Zeichen die bis zu 4 Byte lang sind. D.h., wenn du zwei Zeichen hast, von denen eins zwei Byte und eins drei Byte lang ist, wuerde dir strlen eiskalt 5 zurueckgeben.

Ein Weg das Problem zu umgehn ist die mbstring-Extension. Ob diese vorhanden ist kannst du mit
Code:
extension_loaded('mbstring')
pruefen. Anschliessend musst du das Encoding der Extension auf UTF-8 stellen:
Code:
mb_internal_encoding('UTF-8');
Danach kannst du die MB-Funktionen nutzen. Anstatt strlen verwendest du mb_strlen, anstatt substr mb_substr, usw.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 10. Jul 2008, 11:00
Welche Zeichen wären denn länger als 2 Byte? Reden wir hier von Sonderzeichen wie Pfeile, Häuser etc, oder von den Zeichen A-Za-z/0-9 in verschiedenen Sprachen (Deutsch, Türkisch, Arabisch)?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: [MySQL] Welche Kollation soll ich wählen?

  Alt 10. Jul 2008, 11:41
Das Eurozeichen oder deutsche Umlaute sind 2-Byte-Zeichen. Wir reden also nicht von abwaegigen Zeichen, sondern von durchaus weit verbreiteten

Mehr Informationen findest du in der Wikipedia.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz