2010-09-06 3 views
0

Mon problème n'est pas trop dur mais vraiment ennuyeux.Asp.net Generic Handler Encoding Problème

J'envoie des valeurs à Generic Handler via Ajax comme ça.

xmlHttpReq.open("GET", "AddMessage.ashx?" + (new Date().getTime()) +"&Message=" + Message,true); 

lorsque le message contient Ier,, ö, V, ü, ı ils cherchent comme ça sur Handler Dans context.Request.RawURL Ier,, ö, G, ü, ı ces personnages regardent comme il se doit. Mais dans context.Request.Url ils ressemblent et quand je veux des valeurs QueryString il me donne que puis-je faire?

Répondre

2

Un couple de choses à vérifier:

  1. Dans web.config vous avez défini UTF-8:

    <system.web> 
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 
        ... 
    </system.web> 
    
  2. Vous avez une balise meta appropriée dans votre page HTML:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    
  3. Tous vos .aspx, .ascx, .master, .ashx, ... les fichiers sont sauvegardés en UTF-8 avec BOM sur le disque dur.

  4. Vous êtes paramètres d'encodage URL correctement avant de les envoyer (en utilisant la méthode encodeURIComponent):

    xmlHttpReq.open(
        "GET", 
        "AddMessage.ashx?" + 
         (new Date().getTime()) + 
         "&Message=" + encodeURIComponent(Message), 
        true 
    ); 
    
+0

Merci pour la réponse rapide. Mais ça ne m'aide pas, je l'ai déjà essayé. Mais j'ai trouvé la réponse ici. http://stackoverflow.com/questions/1578398/asp-net-ajax-query-string-parameters-using-iso-8859-1-encoding –

+0

Normalement, si vous effectuez les 4 étapes, je vous ai suggéré, vous n'aurez pas besoin faire les conversions à partir des différents encodages suggérés dans cette réponse. –

0

J'ai trouvé réponse sur ce lien. ASP.NET & Ajax: query string parameters using ISO-8859-1 encoding

// original parameterized value with invalid characters 
string paramQs = context.Request.QueryString["param"]; 
// correct parsed value from query string parameter 
string param = Encoding.UTF8.GetString(Encoding.GetEncoding("iso8859-1").GetBytes(paramQs));