2

我正在使用 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 脚本中(调试时)有一些奇怪的字符而不是波兰字母。我该如何解决?

4

2 回答 2

1

您很可能需要对参数进行百分比编码emailBody

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

届时将

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

在 url 中使用是安全的。

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

string emailBody = HttpUtility.UrlDecode( Request.QueryString["emailBody"], 
                             Encoding.UTF8 );
                          //Javascript's encodeURIComponent is always UTF8
于 2012-12-07T11:33:11.937 回答
0

我之前也遇到过同样的问题。您可以将特殊字符替换为某些分隔符“-”或“,”。当您收到回复时,使用您的特殊字符更新您的字符串并发送邮件。

它可能会帮助你。

于 2012-12-07T11:03:28.707 回答