0 votes

Caractères chinois/japonais dans un champ et un formulaire de recherche

Pourquoi est-ce que lorsque j'utilise Firefox pour entrer : le GET se transformera en :

q=%E6%BC%A2&start=0

Cependant, lorsque j'utilise IE8 et que je tape le même caractère chinois, le GET est :

q=?&start=0

Ça le transforme en point d'interrogation.

4voto

JasonTrue Points 13615

Marquez l'encodage de la page comme UTF-8 et ce problème disparaîtra. Il arrive aussi que Firefox ne parvienne pas à autodétecter votre encodage sans cette indication. Il se peut que vous ayez déjà modifié manuellement l'encodage dans IE, de sorte qu'il devienne la nouvelle valeur par défaut pour les pages non marquées.

mettez ceci dans votre <HEAD> :

<META http-equiv="Content-Type" content="text/html; charset=utf-8">

Si votre contenu n'est pas vraiment en UTF-8, vous devrez utiliser une autre méthode. Il existe un attribut html sur FORM qui indique à IE que vous souhaitez que les caractères de la page de code non-ANSI soient envoyés en UTF-8, mais il est bien plus agréable d'utiliser le type de contenu correct.

De plus, la barre d'adresse n'est peut-être pas le meilleur endroit pour regarder le texte résultant, car la dernière fois que j'ai vérifié, cela ne fonctionnait pas de manière fiable avec les caractères non-ACP. Assurez-vous que vous regardez les données réelles de la requête.

Si vous parlez de la saisie de texte dans la barre d'adresse ou le champ de recherche du navigateur, et non d'une page web spécifique, je ne reproduis pas ce problème sur Windows 7 anglais. Peut-être utilisez-vous une très ancienne version de Windows et la page de code ANSI de votre système ne contient pas ce caractère ; Win95/Win98/WinME auraient certainement ce problème.

Modifié pour ajouter : Dans IE 8, la saisie du caractère que vous avez spécifié sur une page contenant ce contenu fonctionne exactement comme prévu pour moi. Je l'ai vérifié avec Fiddler. Le problème que vous rencontrez est probablement différent de ce que vous avez décrit jusqu'à présent.

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<form accept-charset="utf-8" method="get" action="http://www.example.com/something">
<input type="text" name="q">
<input type="submit">
</form>
</BODY>
</HTML>

En fait, vous n'avez pas besoin de l'option accept-charset, sauf si vous utilisez un autre codage pour la page elle-même. Mais je le laisse à titre d'exemple. Pour qu'il soit réellement utile, du moins dans les versions antérieures d'IE (les choses peuvent avoir changé ; un de mes collègues a spécifié le comportement dans IE5 environ), vous avez besoin d'une option cachée " _charset_ "sans valeur pour encourager le navigateur à indiquer le jeu de caractères qu'il a réellement utilisé, mais c'est superflu dans une page utf-8).

0voto

Fazal Points 1752

Il peut s'agir d'un problème d'installation de police ou d'encodage d'URL.

L'un des principaux problèmes que j'ai rencontrés lors de l'utilisation des caractères CJK est que l'installation des polices de langues d'Asie de l'Est n'est pas effectuée par défaut lors de l'installation du système d'exploitation. Ces caractères s'affichent correctement dans MS Word même si l'installation n'est pas effectuée. Pour s'assurer que toutes les applications du système d'exploitation peuvent traiter les caractères CJK (chinois, japonais et coréen), il est préférable de faire l'exercice suivant

  1. Aller au panneau de contrôle
  2. Sélectionnez les options régionales et linguistiques
  3. Allez dans l'onglet langue
  4. Cochez la case pour installer les polices pour les langues d'Asie de l'Est.

J'espère que vous avez le CD de Windows avec vous pour procéder à cette opération.

Après cela, IE8 devrait afficher les caractères correctement.

De plus, si vous effectuez un encodage d'url, assurez-vous de toujours utiliser UTF-8 comme encodage de caractères lorsque vous traitez des caractères non ASCII.

0voto

bmargulies Points 49855

Tout d'abord, IE estime que les caractères chinois peuvent être envoyés "tels quels" en UTF-8, tandis que Firefox pense qu'ils doivent être codés par URL.

Avez-vous regardé la requête GET sur le fil ? Je parie qu'il s'agit en réalité d'une séquence de trois octets et que l'outil que vous utilisez pour l'afficher la réduit à un ?.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X