Problem mit Umlauten bei MySQL Select

B

BendAR

Aktives Mitglied
Thread Starter
Dabei seit
30.11.2003
Beiträge
168
Reaktionspunkte
0
Hallo,
ich habe eine Tabelle mit Städte Namen in latin1_swedish_ci.
Wenn ich jetzt mit einem Select LIKE '%München%' suche, findet er über PHP nichts. Direkt als SQL Statement funktioniert es aber. Ohne Umlaute funktioniert es auch unter PHP prächtig.
Kennt jemand das Problem?

MySQL 4.1.9-standard
PHP 4.3.10
 
Also bei mir funktionieren Umlaut auch in PHP. Wie genau ist denn Dein PHP-Code? Es muss ja eigentlich daran liegen, wenn es mit SQL funktioniert und unter PHP auch funktioniert, wenn es kein Umlaut ist.

Lass Doch mal Deinen Query ausprinten. Vielleicht wandelt PHP da irgendetwas falsch um. Also am besten mal so ausgeben lassen:
Code:
print $query = "SELECT * FROM latin1_swedish_ci WHERE fieldname LIKE '%München%'";

Was genau steht dann da als Query?
 
Mit latin_swedish_ci meinte ich eigentlich die Kollation :)
Die Query stimmt schon, denn wenn ich die ausgeben lasse und dann in MySQL direkt ausprobiere, funktioniert es ja.
Es liegt wohl an der Kodierung, nur leider weiss ich nicht, wie ich das Problem beheben kann.
 
Vielleicht solltes die Ü,ä,ö als html ü speichern?
 
Wie wäre es wenn du die Kollation so umstellst das sie Umlaute unterstützt.
Ich hab das mal im MS SQL Server 2000 für Unicode umgestellt auf SQL_Latin1_General_CP850_CI_AS. Dabei wird auch noch Groß- und Kleinschreibung ignoriert durch das CI, falls du drüber suchen musst. Wie das bei MySQL aussieht weiß ich nicht genau, müsste aber irgendwie ähnlich sein.

Gruß
TheGreenman
 
Hi,

ich tippe mal, dein Problem ist nicht mySql sondern der WebSrever respektive PHP.

Die laufen ja auch mit einer Encodierung. Wie man das in PHP ändert weiss ich nicht. In Java ist das entsprechende Locale zu setzen.

cu Frank
 
Kollation bleibt latin_swedish_ci

So, dann grab ich diesen Steinzeit-Thread wieder aus.

Ich habe eine Tabelle angelegt, die Kollation aber ist latin_swedish_ci und läßt sich einfach nicht ändern, egal was ich tu.

Die Kollation anderer Tabellen in der MySQL-DB ist aber utf8_general_ci.

Woran kann es liegen, dass ich das latin_swedish_ci nicht weg bekomme?
 
Problem gelöst.
 
Und was war es? :)
 
Die Kollation, die hab ich im Create-Befehl mit angegeben und gut war. Standardmäßig wird aber latin_swedish_ci benutzt. Warum auch immer :noplan:
 
wenn man nichts angibt, dann nimmt der halt die standard einstellung in der der server läuft...
in der my.cnf kannst du das einstellen...


p.s.
um mal das ursprungsproblem zu lösen:
man sollte die richtige collation für die query setzen und natürlich auch das php file mit der richtigen/passenden umlaut kodierung gespeichert haben...
 
Zuletzt bearbeitet:
Das ist mir auch klar geworden, aber warum die auf latin_swedish_ci gesetzt ist und nicht latin_german_ci oder gleich Unicode, kann ich nicht nachvollziehen.
 
weil das der standard bei mysql seit jahren ist, auch seit dem die unicode unterstützen...
k.a. ob die das mit dem 6er release ändern.
 
Mit nicht nachvollziehen können, meine ich, nicht nachvollziehen können warum der Admin das nicht umstellt. Sorry für die Unvollständigkeit.
 
Zurück
Oben Unten