encoder, de se comporter différemment dans Firefox et Internet Explorer
Je veux envoyer de l'entrée de l'utilisateur de google API de géocodage. En agissant de la sorte, j'ai détecté un problème.
Quand j'envoie la saisie de l'utilisateur (par exemple, "köln+l'Allemagne) par le biais de mon script à l'api dans Firefox, il fonctionne très bien. Dans Internet Explorer, cependant cela ne fonctionne pas.
Voici la exemptés de mon code c'est assez pour montrer le problème:
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";
La sortie ($adresse) dans Firefox est: http://maps.googleapis.com/maps/api/geocode/json?address=k%C3%B6ln+Allemagne&sensor=false (qui fonctionne!)
Les mêmes dans Internet Explorer est: http://maps.googleapis.com/maps/api/geocode/json?address=k%F6ln+Allemagne&sensor=false (renvoie "INVALID_REQUEST")
Vous pouvez voir la différence dans l'encodage de l'anacarde. Dans Firefox, il s %C3%B6, dans IE c'est k%F6.
Si je fais la saisie de l'utilisateur "k%C3%B6ln+Allemagne" pour commencer, il fonctionne comme un charme dans Internet Explorer.
Comment puis-je avec PHP s'assurer que la conversion de mes caractères spéciaux est le même dans Internet Explorer comme Firefox. Donc, ö = %C3%B6 au lieu de ö = k%F6
Merci beaucoup!
Paul
Vous devez vous connecter pour publier un commentaire.
C'est un Problème d'encodage, l'encodage par défaut de Firefox est en UTF-8 alors que dans IE, il est ISO-XXXX-X, essayez de
dans Votre HTML -
<head>...</head>
cela permettra de définir l'encodage en UTF-8, donc IE urlencode la chaîne comme Firefox a fait et produit donc un travail demande.et par la manière, vous devez délivrer une page html, si vous voulez qu'un lien de sorte que vous devrait
avant de vous l'écho de la
<a href=...>
etpar la suite.
De cette façon, IE va utiliser le codage UTF-8 sur l'affichage du lien.
Il peut sembler comme si elle allait travailler sans ça, le cul puis IE décode le
<a href=...>
, devine c'est un lien et fait alors son propre code html-tête-corps autour d'affichage qui comprend une<meta http-equiv="content-type" content="text/html; charset=ISO-XXXX-X">
à la place.Si vous venez de passer sur le lien à la via "AJAX" à une page déjà chargée, assurez-vous que cette page contient de l'mentionnées meta-tag.
Donc je sais que cela ne peut pas être la bonne solution, mais si quelqu'un est en cours d'exécution dans le même problème, cette solution a fonctionné pour moi:
Depuis je n'ai pas besoin de conserver les Accents dans mon contexte, c'est ok.
Le problème est qu'indirectement lié au navigateur. urlencode traite les chaînes de caractères comme une séquence d'octets, et comme un résultat est influencé par les paramètres régionaux utilisés par le serveur de la page. La plupart des serveurs web vérifier le navigateur, les paramètres de langue pour détecter la présence de ce paramètre et de l'utiliser pour le texte localisé génération et l'analyse. IE le paramètre de langue par défaut du système d'exploitation de l'utilisateur paramètres régionaux.
Cela signifie que Firefox rapport de l'anglais comme la langue du visiteur, tandis que IE rapport allemand sur le même ordinateur. Sauf si vous convertissez votre chaîne d'entrée à l'UTF8 tout d'abord, la conversion dépend de la client locale de l'