Chrome codiert, wandelt diese: aöüß
-%C3%A4%C3%B6%C3%BC%C3%9F
Aber Firefox wandelt es in diese seltsame Sache hier: a%F6%FC%DF
Ich kann nicht einen Weg zu finden, scheinen die Firefox Sache wieder auf den ursprünglichen in PHP zu konvertieren . urldecode und rawurldecode leider nicht funktionieren. Weiß jemand, wie man damit umgeht? Vielen Dank.Difference Firefox - Chrome, wenn Umlaute
Antwort
Wie Tei bereits vermutet: Chrome verwendet UTF-8 (wie wahrscheinlich empfohlen) für URL-Parameter, während Firefox Latin-1 verwendet. Ich glaube nicht, dass Sie dieses Verhalten kontrollieren können. Auch das wird schwierig zu handhaben sein, da Sie ziemlich genau die verwendete Kodierung erraten müssen.
Dies ist, wie die Decodierung Werke (browserabhängig, vorausgesetzt, dass Sie UTF-8 in Ihrer Anwendung verwenden):
Chrome:
$text = urldecode($_GET['text']);
Firefox:
$text = utf8_encode(urldecode($_GET['text']));
Dies kann eine Lösung sein, die in den meisten Fällen funktioniert:
0 zu zwingen, UTF-8 durch einen Header mit PHP zu senden und mit Hilfe von Tags html Meta arbeitete nichtsfunction urldecode_utf8($text) {
$decoded = urldecode($text);
if (!mb_check_encoding($decoded, 'UTF-8')) {
$decoded = utf8_encode($decoded);
}
return $decoded;
}
Kraft Ihrer Seite UTF-8 zu verwenden. Wahrscheinlich sind diese Codes unterschiedlich codierte Umlaute. Eins ist etwas wie Latin1 und das andere ist vielleicht UTF-8.
Der beste Weg, utf-8 zu zwingen, ist in einem Meta-Tag im HTML.
ich schon versucht. Und es ist keine Form btw, nur ein normaler get-Parameter? Text = aöüß – Stefan
? Text = aöüß ist nicht urlencodiert. Um in Javascript zu kodieren, benötigen Sie encodeURIcomponent, um die Kodierung beizubehalten. Um in PHP zu codieren, können Sie rawurlencode verwenden. Ich weiß nicht, ob Sie rawurldecode benötigen oder nicht, wenn Sie einen Artikel rawurlodecodieren. – Tei
Fügen Sie Text = aöüß zu einer Seite in Firefox hinzu und Sie werden sehen, dass es es automatisch zu einem% F6% FC kodiert. – Stefan
Danke, das hat funktioniert. Aber diese verschiedenen Browser verhalten sich einfach nur -.- – Stefan
Ja, ich bin wirklich überrascht, dass Firefox hier immer noch an Latin-1 klebt. – Niko
Super! Die Funktion funktioniert einwandfrei für mich – Stefan