Comment définir le “Content-Type ... charset” dans l'entête de la requête à l'aide d'un lien HTML
J'ai une simple page HTML avec une codé en UTF-8 lien.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<a charset='UTF-8' href='http://server/search?q=%C3%BC'>search for "ü"</a>
</body>
</html>
Cependant, je n'ai pas le navigateur pour inclure Content-Type:application/x-www-form-urlencoded; charset=utf-8
dans l'entête de la requête. Je dois donc configurer le serveur web pour assumer toutes les demandes sont codés en UTF-8 (URIEncoding="UTF-8" dans Tomcat server.xml). Mais bien sûr, l'admin ne me laisse pas faire que dans l'environnement de production (Websphere).
Je sais que c'est assez facile à réaliser en utilisant Ajax, mais comment puis-je contrôler l'entête de la requête lors de l'utilisation de la norme HTML des liens? Le charset
attribut ne semble pas fonctionner pour moi (testé avec IE8 et FF 3.5)
La 2ème partie de la solution serait de définir le codage d'URL lors de la modification d'un IFrame est document.location
à l'aide de Javascript.
- Le
charset
attribut n'est pas très utile et est maintenant obsolète. Voir cette question: stackoverflow.com/questions/17199047/... - La question que vous avez associé n'est pas vraiment liés à celle-ci. Toutefois, il est bien évident que <lien charset=" est obsolète. +1
- Oui, je ne dis pas que les deux questions sont des doublons.
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible en HTML sur. Le plus proche que vous pouvez obtenir est la
accept-charset
attribut de la<form>
. Seulement MSIE navigateur respecte cela, mais il est quand même de faire le mal (par exemple, CP1252 est fait été utilisé quand il dit qu'il a envoyé ISO-8859-1). Les autres navigateurs sont totalement ignorant et qu'ils utilisent le jeu de caractères spécifié dans laContent-Type
en-tête de la réponse. Définir le codage des caractères à droite est en fait entièrement la responsabilité de la partie serveur. Le client doit tout simplement l'envoyer en arrière dans le même jeu de caractères que le serveur a envoyé la réponse.Au point, vous devriez vraiment configurer l'encodage des caractères des trucs complètement du côté serveur sur. Pour surmonter l'incapacité de modifier
URIEncoding
attribut, quelqu'un ici sur écrivait un (complexe) de filtre: Détecter l'encodage des URI automatiquement dans Tomcat. Vous trouverez des informations utiles aussi bien (note: je n'ai pas testé).Mise à jour:
A noté que la balise meta comme indiqué dans votre question est ignoré lorsque le contenu est transféré sur HTTP. Au lieu de cela, la réponse HTTP
Content-Type
en-tête sera utilisé pour déterminer le type de contenu et le codage des caractères. Vous pouvez déterminer l'en-tête HTTP, avec par exemple Firebug, dans le Net panneau.<meta http-equiv="content-type" content="text/html; charset=UTF-8">
mais le serveur navires sans charset-des informations dans l'en-tête HTTP. Connaissez-vous des ressources sur la façon de l'encodage des informations dans l'en-tête HTTP et HTML sont censés travailler ensemble? Pourquoi avons-nous besoin de deux d'entre eux?<%@ page pageEncoding="UTF-8" %>
en haut. Lors de l'utilisation de Servlet, vous devriez faireresponse.setCharacterEncoding("UTF-8");
. Les deux implicitement défini le bon charset dans le type de contenu d'en-tête. Vous pouvez trouver cet article utile: Unicode - Comment obtenir des caractères à droite?. Pour les JSP/Servlet solutions, commencer à ce chapitre.X-Content-Type-Options
n'est pas défini, mais les navigateurs modernes ont tendance à ne plus faire du mime type reniflant. Donc, il y a un moyen de surcharger le serveur fourni type mime avec ʜᴛᴍʟ ? (en ignorant ce que les attributs sont dépouillés)