Umlaute aus DB mit Sortierung – Windows geht, Linux nicht

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe mir ein paar Skripts auf meinem XAMPP-Server gebastelt und jetzt die ganze Sache auf meinen Linux-Server im Internet geladen - hier nutze ich ebenfalls als DB eine MySQL-DB.

Ich habe nun Einträge in meiner Datenbank welche mit unter mit Umlauten (Ä, Ö, Ü) beginnen. Ich habe das ganze nicht in ihre Entinitäten umgewandelt, da mir dann ja die alphabetische Sortierung aus der DB nicht mehr klappt.

So nun zu meinem Problem:
Auf meinem Windows-XAMMP-System werden alle Einträge korrekt angezeigt - auch die welche mit einem Ä oder Ö oder Ü beginnen.
Jetzt auf meinem Linux-System werden zwar alle Einträge ausgegeben aber nicht mehr in der richtigen Reihenfolge.

Unter Windows hatte ich z.B. folgende Sortierung:
24 Stunden
Ärzte
Auto
Einzelhandel
Wellness

Unter Linux habe ich jetzt:
24 Stunden
Auto
Einzelhandel
Wellness
Ärzte

Kann mir da jemand weiterhelfen?
 
Kann ich denn die Zeichensätze irgendwie beeinflussen bei der Abfrage oder muss man da an MySQL "schrauben"?

Ich verstehe es nicht Gumbo - auch die Linkänderung ist mir absolut unklar - kannst du mir den alten Link auch nochmal posten.

Ich verwende für meine Abfragen folgenden Code:
Code:
SELECT * FROM `categories` WHERE `parent_id` = '0' ORDER BY `categories_name` ASC
Wie kann ich jetzt in meiner Anweisung den Zeichensatz unterbringen?
 
Zuletzt bearbeitet:
Leider hat mir hier keiner mehr geantwortet.

Also ich hatte Kontakt mit einem Linux-Freak und der hat mir den Zeichnsatz direkt in MySQL geändert.

Nur als Info für die die das gleiche Problem haben.
 
Hallo!

Was verstehst Du mit "direkt in MySQL"?
Es langt wenn die Spalten den richtigen Zeichensatz besitzen..... besser währe es aber wenn die ganze Tabelle den entsprechenden Zeichensatz besitzt.

Gruss Dr Dau
 
Hallo zusammen

Eine Tabelle (wie auch die gesamte Datenbank) kann nur einen Default-Zeichensatz und eine Default-Collation haben. Wird beim Anlegen eines Textfeldes kein Zeichensatz oder keine Collation angegeben, so werden diese Defaults verwendet.

Maßgeblich für die Sortierung ist die Collation des Feldes. Die Collation für korrekte deutsche Umlaut-Sortierung ist latin1_german2_ci.

Wenn Zeichensatz und Collation in der Tabellendefinition nicht beeiflussbar sein sollten, dann kann der Zeichensatz in der Abfrage mittels der CONVERT-Funktion erzwungen werden (falls dieser nicht zu der gewünschten Collation passen sollte), die Collation mittels COLLATE (Collation und Zeichensatz müssen immer zueinander passen):
Code:
SELECT
  ...
ORDER BY
  CONVERT(`feld` USING latin1) COLLATE latin1_german2_ci
 
Zuletzt bearbeitet:
Im SELECT die Collation zu ändern macht aber u.U. (je nach Anzahl der Abfragen) unnötig viel Schreibarbeit.
Da lege ich doch lieber in der entsprechenden Spalte bzw. Tabelle die Collation fest.
 
@Dr.Dau:
Schon klar, selbstverständlich ist das die bessere Methode. Deshalb hab ich ja auch geschrieben: "Wenn Zeichensatz und Collation in der Tabellendefinition nicht beeiflussbar sein sollten...". ;)
 
ManicMarble hat gesagt.:
"Wenn Zeichensatz und Collation in der Tabellendefinition nicht beeiflussbar sein sollten...". ;)
Ist das denn überhaupt möglich?
Bzw. wie ist es möglich?!
In der Rechtevergabe sehe ich jedenfalls nichts davon.
 
Dr Dau hat gesagt.:
Ist das denn überhaupt möglich?
Bzw. wie ist es möglich?!
In der Rechtevergabe sehe ich jedenfalls nichts davon.
Rechtemäßig vielleicht nicht, aber wenn du z.B. mehrsprachig arbeitest... Dann hast du evtl. eine Datenbank mit vielen Datensätzen, manche queries willst du aber evtl. "deutsch" sortieren, manche anders; dann macht es Sinn, den Sortierungs-Zeichensatz extra im Query anzugeben.
 

Neue Beiträge

Zurück