Chrome converte questo: aöüß
-%C3%A4%C3%B6%C3%BC%C3%9F
Ma Firefox converte in questa strana cosa qui: a%F6%FC%DF
io non riesco a trovare un modo per convertire la cosa Firefox di nuovo all'originale in PHP . Urldecode e rawurldecode sfortunatamente non funzionano. Qualcuno sa come affrontarlo? Grazie.Differenza Firefox - Chrome durante la codifica dieresi
risposta
Come Tei già indovinato: Chrome utilizza UTF-8 (come probabilmente consigliato) per i parametri URL mentre Firefox utilizza Latin-1. Non penso che tu possa controllare questo comportamento. Anche questo sarà difficile da gestire, perché hai praticamente bisogno di indovinare la codifica che è stata utilizzata.
Questo è come le opere di decodifica (browser-dipendente, supponendo che si sta utilizzando UTF-8 nella propria applicazione):
Chrome:
$text = urldecode($_GET['text']);
Firefox:
$text = utf8_encode(urldecode($_GET['text']));
Questa può essere una soluzione che funziona nella maggior parte dei casi:
function urldecode_utf8($text) {
$decoded = urldecode($text);
if (!mb_check_encoding($decoded, 'UTF-8')) {
$decoded = utf8_encode($decoded);
}
return $decoded;
}
Forza la pagina per utilizzare UTF-8. Probabilmente questi codici sono dieresi codificati diversi. Uno è qualcosa come Latin1 e l'altro forse è UTF-8.
Il modo migliore per forzare utf-8 è in un meta tag nell'html.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Ho già provato a forzare UTF-8 inviando un'intestazione con PHP e utilizzando meta tag HTML, non ha funzionato. E non è una forma btw, solo un normale parametro get? Text = aöüß – Stefan
? Text = aöüß non è codificato in url. Per codificare in javascript hai bisogno di encodeURIcomponent, per preservare la codifica. Per codificare in PHP, puoi usare rawurlencode. Non so se avrai bisogno o meno di rawurldecode se rawurldecode un articolo .. – Tei
Aggiungi? Text = aöüß a una pagina in Firefox e vedrai che lo codifica automaticamente su un% F6% FC% DF – Stefan
Grazie, ha funzionato. Ma questi diversi comportamenti del browser fanno solo schifo -.- – Stefan
Sì, sono davvero sorpreso che Firefox si attacchi ancora a Latin-1 qui. – Niko
Fantastico! La funzione funziona perfettamente per me – Stefan