Zeichensatzproblem (UTF-8)

Registrierer

Erfahrenes Mitglied
Nach dem Erstaufruf einer Seite schreibe ich in ein Formular ein "ü".
Per Ajax wird während der Eingabe eine DB abgefragt, wo abwechselnd offensichtlich ein falscher Zeichensatz verwendet wird.
Den Zeichensatz frage ich folgendermassen ab:
PHP:
if(mb_detect_encoding($_GET['input'], 'UTF-8, ISO-8859-1') === 'UTF-8')
  echo ' der String "'.$_GET['input'].'" ist in UTF-8 kodiert';
Die Ergebnisse sind:
Code:
der String "?" ist in UTF-8 kodiert
manchmal aber auch
Code:
der String "ü" ist in UTF-8 kodiert

Also immer UTF-8, aber offensichtlich doch nicht! Wie könnte man das genauer eingrenzen?

Merkwürdig ist, dass wenn die URL in die Adresszeile eingegeben und aufgerufen wird das ü erscheint.
Rufe ich die Seite von einer beliebigen Verknüpfung auf, kommt das Fragezeichen.

Und noch seltsamer ist, das der Explorer es immer gleich interpretiert, während FF, OP usw. unterschiedliche Ausgaben liefern.

Das hat doch dann eigentlich nichts mehr mit PHP zu tun, oder?

Das Formular sieht so aus:
HTML:
    <script type="text/javascript" src="funktionen/autofill/ajax_index.js"></script>
    <form method="post" action="" autocomplete="off">
      <span class="labelinside"><label for="input">bitte Name, Kennzeichen oder Kundennummer eingeben...</label>
      <input type="text" onkeyup="doWork('input', 'outputText');" name="autokunde" autofocus="input" id="input"></span>
      <div id="outputText"></div>
      <script type="text/javascript" src="funktionen/autofill/jquery-1.4.2.min.js"></script>
      <script type="text/javascript" src="funktionen/autofill/label-inside.js"></script>
    </form>

Das Ajax Script stammt ursprünglich von Yaslaw http://wiki.yaslaw.info/wikka/PhpAjax1 (vielen Dank dafür).
 
Wusste gar nicht, das man das explizit einstellen muß ;-)
Hab jetzt:
PHP:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $con);

Metatag = UTF-8, vorher iso-8859-1

eingestellt und habe jetzt erstmal eine vernünftige Darstellung der Daten. Danke für den Stupser...
 
Zitat toscho.design: Datei im Browser öffnen und die Zeichenkodierung der Ausgabe manuell auf ISO-8859-1 festsetzen. Steht ganz oben , haben wir ein BOM erwischt.

Habe nach vorgenannter Methode gesucht und mit Notepad++ die betroffenen Dateien angeschaut, konnte aber diesbezüglich nichts finden.
Hab trotzdem Konvertierung nach UTF-8 ohne BOM angeschubst, aber keine Änderung.
 
An BOM liegt es nicht, und alle weiteren Recherchen ergaben auch keine Lösung.

Ich mach es jetzt so:
PHP:
  $IE = strstr($_SERVER["HTTP_USER_AGENT"], "IE");
  if ($IE == true)
    $_GET['input'] = utf8_encode($_GET['input']);
Allerdings weiss ich nicht, wie zuverlässig das ist.
 
Zurück