url-codieren, anders zu Verhalten in Firefox und Internet Explorer
Ich möchte zum senden einer Benutzer-Eintrag, um die google geocode API. Dabei habe ich ein problem erkannt.
Wenn ich senden Sie die Benutzer-Eingabe (z.B. "köln+Deutschland") durch mein script an die api in Firefox funktioniert es Super. Im Internet Explorer jedoch funktioniert es nicht.
Hier ist der steuerfreie meinem code, dass ist genug, um zu zeigen, das problem:
header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: no-cache, must-revalidate');
$loc = urlencode($_GET['loc']);
echo $address = "http://maps.googleapis.com/maps/api/geocode/json?address=$loc&sensor=false";
Den output ($Adresse) in Firefox ist: http://maps.googleapis.com/maps/api/geocode/json?address=k%C3%B6ln+Deutschland&sensor=false (funktioniert!)
Das gleiche im Internet-Explorer ist: http://maps.googleapis.com/maps/api/geocode/json?address=k%F6ln+Deutschland&sensor=false (gibt "INVALID_REQUEST")
Können Sie sehen den Unterschied in der Codierung der ö. In Firefox ist %C3%B6, IE es k%F6.
Wenn ich die user-Eingabe "k%C3%B6ln+Deutschland" zu beginnen, es funktioniert wie ein Charme in Internet Explorer auch.
Wie kann ich mit PHP gewährleisten, dass die Umstellung von meinen besonderen Zeichen ist das gleiche im Internet Explorer wie im Firefox. Also ö = %C3%B6-statt ö = k%F6
Vielen Dank!
Paul
InformationsquelleAutor Paul Riedel | 2011-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein encoding-Problem, die Standard-Kodierung in Firefox ist UTF-8, während im IE ist es einige ISO-XXXX-X, versuchen Sie
in Ihre HTML -
<head>...</head>
dies die Codierung auf UTF-8, so dass der IE die urlencode-Zeichenfolge wie Firefox hast, und erzeugt daher eine Arbeitsgruppe Anfrage.und by the way, liefern Sie uns ein html-Seite, wenn Sie möchten, dass ein link, so sollten Sie
bevor man das echo der
<a href=...>
unddanach.
So IE wird unter Verwendung der UTF-8-Codierung über die Anzeige der link.
Könnte es scheinen, als ob es funktionieren würde ohne das Zeug, butt dann IE dekodiert den angegebenen
<a href=...>
Vermutungen es ist ein link und macht dann seine eigenen html-Kopf-Körper um es, um es anzuzeigen - das umfasst dann eine<meta http-equiv="content-type" content="text/html; charset=ISO-XXXX-X">
statt.Wenn Sie übergeben Sie einfach den link über "AJAX", um eine Seite bereits geladen wurde stellen Sie sicher, dass Sie diese Seite enthält die erwähnte meta-tag.
Update: Auch dies scheint nicht zu arbeiten, wenn nur die Ausgabe von HTML. Irgendwelche anderen Ideen?
InformationsquelleAutor zuloo
So, ich weiß, das kann nicht die richtige Lösung, aber für jemand mit den gleichen problem, dieser workaround bei mir funktioniert:
Da ich mich nicht schützen zu müssen, die Umlaute in meinem Kontext ist das ok.
InformationsquelleAutor Paul Riedel
Das problem ist nur indirekt mit dem browser. urlencode behandelt strings als Sequenz von bytes, und als Ergebnis ist beeinflusst durch die locale verwendet, die von der server-Seite. Die meisten web-Server aktivieren der browser-Sprache-Einstellungen zu erkennen, diese Einstellung und verwenden Sie es für lokalisierten text-Generierung und-Analyse. IE die Spracheinstellung standardmäßig auf jene des Betriebs-system-Benutzer Gebietsschema-Einstellungen.
Dies bedeutet, dass Firefox meldet möglicherweise Englisch als die bevorzugte Sprache des Benutzers, während der IE-report Deutsche auf dem gleichen computer. Es sei denn, Sie speziell konvertieren Sie Ihre Eingabe-string nach UTF8 erste, der Umwandlung hängt von der client-Gebietsschema
InformationsquelleAutor Panagiotis Kanavos