Der Martin: Nochmal von vorne...

Beitrag lesen

Hi,

Anscheinend habe ich mich undeutlich ausgedrückt und wir reden aneinander vorbei.

nein, ich glaube nicht. Ich habe eher den Eindruck, dass du den Vorgang, der da abläuft, nicht im Detail verstanden hast.

1. Du gibst in der Adresszeile ein:
   Fall a:  http://ru.wikipedia.org/wiki/Компьютер
   Fall b:  http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80
2. Dein Browser interpretiert die Eingabe. Er stellt im Fall a fest, dass einige Zeichen in der URL
   nicht zulässig sind und codiert sie entsprechend, während er im Fall b nichts tun muss.
3. Der Browser sendet in beiden Fällen folgenden, korrekt codierten Request an den Server:
   GET /wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80 HTTP/1.1
4. Der Browser "korrigiert" die Anzeige in der Adresszeile nach eigenem Ermessen.
   Während der IE sie ggf. durch die URL-codierte Fassung ersetzt, zieht der Firefox die
   Angabe in Klartextzeichen vor und konvertiert ggf. URL-encoded in Klartext zurück.

http://ru.wikipedia.org/wiki/Компьютер
http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80

Über beide Varianten bekomme ich diese Seite, und zwar auch im IE.

Ich habe hier nur IE bis maximal Version 6. Der zeigt mir aber nach Eingabe der URL, egal in welcher Form, immer die percent-encoded Fassung an. Der Seiteninhalt an sich ist natürlich immer identisch, denn es wird ja dieselbe Ressource angefordert.

Mich würde nun interessieren, was ich tun muss, damit das auch mit dem Testskript klappt.

Nichts. Du hast keinen Einflüss darauf, wie der Browser die Adresszeile aufbereitet.

<?php
if(isset($_GET['q']))
{
   $q = urldecode($_GET['q']);

Hier bist du in einem anderen Märchen: Dieses Beispiel verwendet URL-Parameter. Die behandelt mein Firefox zwar exakt genauso wie oben beschrieben, mein IE sendet sie aber uncodiert an den Server. Eine Eingabe von http://localhost/?q=Ätsch erzeugt im Server-Log einen Eintrag für /?q=\xC4tsch.
Ob neuere IEs das anders machen, kann ich nicht sagen.

So long,
 Martin

--
Lieber eine Stumme im Bett, als eine Taube auf dem Dach.