在请求期间,参数以奇怪的方式编码

时间:2012-06-13 11:27:47

标签: c# asp.net string encoding character-encoding

有时我会遇到以下问题:

string txt = con.Request.Params["Par_name"].ToString();//the original par value is arabic text

我得到以下结果!!

��� ������ ������� �����

这个问题是什么原因以及如何获得原始的阿拉伯语文本?

1 个答案:

答案 0 :(得分:3)

当您通过url parametres发送字符串时,即使通过ajax及其utf-8来避免冲突,您也必须使用encodeURIComponent之类的javascript函数对其进行编码。只编码值的一部分,而不是参数和完整的URL!然后读取后面代码的参数,默认情况下它们通常是UrlDecode,但如果不是,请手动执行。

例如https://stackoverflow.com/a/10968848/159270的代码为:

jQuery.ajax({
    url: "/LogAction.ashx?par_name=" + encodeURIComponent(par_name) + "&par_address=" + encodeURIComponent(par_address),
    type: "GET",
    timeout: 3000,
    async: true, // you can try and async:false - maybe is better for you
    data: action=4, // here you send the log informations
    cache: false,
    success: function(html) {
        jQuery("#FormID").submit();
    },
    error: function(responseText, textStatus, XMLHttpRequest) {                 
        jQuery("#FormID").submit();
    }
});

我没有在前一个答案中包含这个编码,因为通常它们不是作为参数发送字符串,而是变量,因为答案不是关注这个细节。

您还可以阅读:http://xkr.us/articles/javascript/encode-compare/