MySQL-Select und PHP Switch, Sonderzeichen

timbajr

Aktives Mitglied
Thread Starter
Dabei seit
22.04.2005
Beiträge
582
Reaktionspunkte
26
Hi ihr,

ich möchte aus einer MySQL DB (auf deren Encoding ich nicht zwingend Einfluss habe, zumindest noch nicht) auf ein Attribut ein switch in PHP machen. Leider kommt in einem String ein Sonderzeichen vor. Nun meine Frage, wie krieg ich das mit dem Enconding hin, dass ich zB auf "Müller" ohne Probleme ein switch ausführen kann?

Gruß
timbajr
 
du kannst doch mit mysql statements das encoding einstellen (query mit SET NAMES)...
welche mysql version ist es denn?
und verwendest du php-mysql oder php-mysqli?
 
MYSQL Version 5.0.21

Ich setze das Encoding mit SQL Statements auf latin1. Das müsste doch dann stimmen oder nicht?
 
stimmen ist relativ ;)
weil die strings in php verschiedene encodings haben können...
kannst ja das encoding feststellen und ggf. umkodieren...
 
Hab ich probiert mit :
Code:
switch(mb_convert_encoding($string,"utf-8")){
case mb_convert_encoding("textmitÜÜÜ","utf-8"):
...

}

Irgendwie will es trotzdem nicht?

Geht das nicht irgendwie "einfacher"? Ich hatte das Problem irgendwie noch nie?!
 
stell doch das encoding auf utf8 in mysql, dann brauchst nicht konvertieren...
bzw mb_detect_encoding um zu checken, ob du konvertieren musst...
oder probier mal utf8_encode statt mb_convert_encoding
 
Hab ich mit

Code:
if(!mysql_query("set character_set_results='utf8';")){
    die(mysql_error());
}

.. für server, database und client gemacht. Falsch? Oder was vergessen.

OFFTOPIC:
Hatte übrigens auf dich gehofft, dass du online bist. Hab zwar noch nie eine Frage hier eingestellt, aber deine Kommentare sind durchgehend sehr wertvoll und zeigen Kompetenz ;-) Mal so nebenbei "gelobt"
 
sollte eigentlich reichen, es sei denn du schickst auch utf8 queries an den server...

check doch mal eben was für einen string du da wieder kriegst bei müller mit mb_detect_encoding...
 
Der String ist laut mb_detect_encoding ein UTF-8. Das "komische" ist, dass alle nicht mit umlaut-versehenen Strings alle als ASCII ausgegeben werden (also auch noch mb_convert_encoding).

EDIT: ich schicke ganz normal per mysql_query die Anfragen. Also bisher hats immer so geklappt...
 
probier mal utf8_encode

ich schätze mal mb_detect_encoding gibt immer ascii aus, wenn keine umlaute da sind, da der wohl daran nur erkennt was das für ein string ist...
 
oneOeight schrieb:
probier mal utf8_encode

ich schätze mal mb_detect_encoding gibt immer ascii aus, wenn keine umlaute da sind, da der wohl daran nur erkennt was das für ein string ist...

damit hab ich auch schon in allen Varianten rumprobiert, also auch die für mich einzig logische:

Code:
switch(utf8_encode($string)){
case utf8_encode("müllerString"):

...

}

Selbst wenn man es im case weglässt, macht er es nicht. Ich hab sogar in der SQL Abfrage schon mit

Code:
convert(ATTRIBUT using utf8) as UTF8Attr

rumprobiert.

Ich verstehs einfach nicht mehr oder es ist ein Bug. Wobei ich mal von ersterem ausgehe :)
 
gute frage, vielleicht hat das switch statement probleme mit utf-8 oder umlauten generell?...

kannst ja mal versuchen mit utf8_decode den string für das switch in iso8859-1/latin1 zu wandeln, ob es dann geht...
 
oneOeight schrieb:
gute frage, vielleicht hat das switch statement probleme mit utf-8 oder umlauten generell?...

kannst ja mal versuchen mit utf8_decode den string für das switch in iso8859-1/latin1 zu wandeln, ob es dann geht...



JA saucool, danke. UTF8_DECODE muss man nehmen !!! Wieder mal ein Erfolg in diesem Forum !!!

Danke dir oneOeight
 
Zurück
Oben Unten