2012-06-13 42 views
1

有時候,我面臨着以下問題:在請求中,參數在陌生的方式編碼

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

我得到以下結果!

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

這個問題的原因是什麼,以及如何獲得原始的阿拉伯文文本?

+0

看看「(HTTP [絕對最低每一個軟件開發人員絕對,積極必須知道的關於Unicode和字符集(沒有藉口!)]://www.joelonsoftware。 COM /用品/ Unicode.html)」。這很可能是一個不一致的編碼/轉換問題。 –

+1

當你在你的url上添加你的參數時,你必須先讓它們成爲UrlEncode() - 是嗎? – Aristos

+0

@UweKeim:非常感謝:) –

回答

3

當你通過URL參數應用發送字符串,即使通過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/

+0

真的很感謝,我很好 我可以問兩個問題: –

+0

爲什麼要輸入:「GET」? async:true,這是什麼意思? –

+1

@just_name你可以試試true或false,什麼是對你更好的工作。一個人在等待,直到你有回報你的請求(瀏覽器停止,直到返回),另一個不停止在那裏,並且當你從請求返回時正在運行函數成功。 – Aristos