ajax aspx脚本参数波兰语(特殊)字符

时间:2012-12-07 09:48:32

标签: javascript asp.net ajax character-encoding

我正在使用ajax调用aspx服务器端脚本来发送电子邮件消息。这是我的ajax发送功能:

//global variables-------------------------------------------------------
var html_dir = "/Html/"
var net_dir = "/Net/"
//ajax request-----------------------------------------------------------
function ajaxRequest(url, cfunc, asynch)
{
    // code for IE7+, Firefox, Chrome, Opera, Safari
    if (window.XMLHttpRequest)
{
    response = new XMLHttpRequest();
}
// code for IE6, IE5
else
{
    response = new ActiveXObject("Microsoft.XMLHTTP");
}

    //send request
    response.onreadystatechange = cfunc;
    response.open("GET", url, asynch);
    response.send();
}
//----------------------------------------------------------------------- 

以及我如何运行此功能:

ajaxRequest(net_dir + "SendForm.aspx?emailBody=" + emailBody, formSent, true);

它工作正常,但我有波兰字符(łńóąę等)的问题。在电子邮件和SendForm.aspx脚本(当调试时)有一些奇怪的字符而不是抛光字母。我该如何解决?

2 个答案:

答案 0 :(得分:1)

您很可能需要percent-encode emailBody参数:

ajaxRequest(net_dir + "SendForm.aspx?emailBody=" + encodeURIComponent(emailBody), formSent, true);

然后

encodeURIComponent("łńóąę") === "%C5%82%C5%84%C3%B3%C4%85%C4%99"

在网址中使用哪个是安全的。

在服务器端,如果没有自动完成,则需要对其进行解码:

string emailBody = HttpUtility.UrlDecode( Request.QueryString["emailBody"], 
                             Encoding.UTF8 );
                          //Javascript's encodeURIComponent is always UTF8

答案 1 :(得分:0)

在一段时间之前我也遇到过同样的问题。您可以将特殊字符替换为“ - ”或“,”。当您获得响应时,使用您的特殊字符更新您的字符串并发送邮件。

它可能对你有帮助。