Tach!
Ergänzend zum Martin:
URL-Parameter mit Umlaut werden von verschiedenen Browsern verschieden umgesetzt und gesendet. Meine Seiten sind UTF-8 codiert.
Eingabe in der Adresszeile:
Gegen das, was der Browser beim händischen Eingeben macht, kann man von Serverseite aus nichts machen. Du kannst nur zu erkennen versuchen, ob du UTF-8 gesendet bekommst oder nicht. Theoretisch ist das nicht in jedem Fall zweifelsfrei möglich. (Eine gültige UTF-8-Sequenz könnte auch zwei (bis vier) einbytige Zeichen darstellen. Praktisch kommen solche Zeichenfolgen aber kaum unter "normalen" Umständen vor.) Und auch wenn es kein UTF-8 ist, kann es noch eine Vielzahl anderer Kodierungen sein, die man nicht allein anhand der Betrachtung der Zeichen-Codes auseinanderhalten kann. In der Praxis wirst du dich auf UTF-8 und ISO-8859-1 (und Windows-1252 => ISO-8859-1 plus ein paar weitere Zeichen) beschränken können. Es sei denn, du bedienst auch noch den Markt, der normalerweise eine andere ISO-8859-x-Kodierung oder was ganz anderes verwendet. Dann wird es unter Umständen unlösbar, wenn du nicht vor dem Dekodierversuch bereits festlegen kannst: "das ist Westeuropa" also wird es ISO-8859-1 sein, "das ist Mitteleuropa" => -2, "das ist Russisch, ..." => -5, etc.
Es gibt diverse Funktionen in den Userkommentaren des PHP-Handbuch (z.B. unter utf_8en/decode) oder anderswo, die zumindest das Erkennen von UTF-8 versprechen. Alle Funktionen können höchstens aussagen: "ja, das ist ein Text ohne ungültige UTF-8-Sequenzen", was für praktische Belange als "ja, das ist UTF-8" angesehen werden kann. Von diesen Funktionen gibt es (mindestens) zwei Arten. Die einfachen kodieren einmal nach ISO-8859-1 und wieder zurück nach UTF-8 um. Wenn das Ergebnis gleich ist, dann ist es kein ungültiges UTF-8 (sprich: ist vermutlich UTF-8). Diese Methode hat aber den Nachteil, dass dabei auch Texte als ungültig verworfen werden, die Zeichen außerhalb des ISO-8859-1-Bereichs enthalten. Allerdings ist diese Methode sehr schnell. Die langsame Art ist, den Text Byte für Byte durchzugehen und bei Werten oberhalb von x7F auf gültige UTF-8-Sequenzen zu prüfen. Das Ergebnis ist wie bei der anderen Art zu interpretieren.
Da ich in der DB danach suche, gibt es kein Ergebnis. Was mache ich falsch?
Von und zur DB ist aber alles richtig, sprich: mysql(i)_set_charset() oder SET NAMES oder ein Äquivalent verwendest du einerseits, die Kodierung der einzelnen String-Felder andererseits stimmt auch?
dedlfix.