在请求过程中,参数以奇怪的方式编码

本文关键字:方式 编码 请求 过程中 参数 | 更新日期: 2023-09-27 18:37:13

有时我会遇到以下问题:

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

我得到以下结果!!

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

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

在请求过程中,参数以奇怪的方式编码

当你通过url参数发送字符串时,即使是通过ajax及其utf-8以避免冲突,你必须使用像encodeURIComponent这样的javascript函数对其进行编码。仅对值的一部分进行编码,而不对参数和完整的网址进行编码!然后读取代码后面的参数时,它们通常默认是 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/