2014-04-02 25 views
1

我的編碼有一個非常奇怪的問題,它讓我瘋狂。Javascript自動將UTF轉換爲ISO-8859

所以,讓我們假設這樣的:

function Test(Name, callback) { 
    $.ajax({ 
     type: "POST", 
     url: "Test.php", 
     data: "Name=" + Name, 
     success: function (msg) { 
      callback(msg); 
     } 
    }); 
} 

和test.php的文件:

function is_utf8($string) { 
    return (mb_detect_encoding($string, 'UTF-8', true) == 'UTF-8'); 
} 

    if (is_utf8($_POST["Name"])){ 
     echo "Im in UTF"; 
    } 
    else{ 
     echo "im not in UTF!!"; 
    } 

編輯 - 閱讀本 我發現了一些 - >在[HTTP:// WWW。 w3schools.com/tags/ref_urlencode.asp][http://www.w3schools.com/tags/ref_urlencode.asp]我發現問題導致編碼,例如「%21」變成感嘆號。如何阻止這種情況發生?我想簡單地傳遞%,21和PHP獲得字符串「%21%的字符串,所以當我將它轉換爲UTF我得到的感嘆號。

+0

可能重複我怎麼能知道如果URL編碼的字符串是UTF-8或拉丁語-1與PHP?](http://stackoverflow.com/questions/21384050/how-can-i-know-if-url-encoded-string-is-utf -8-or-latin-1-with-php) – andyb

+0

我不想知道它是什麼字符集...這個問題是關於它爲什麼會轉換它的,我確切知道輸入字符集是什麼 – user3370402

+0

jQuery將會將_data_轉換爲查詢字符串,適合默認的內容類型「application/x-www-form-urlencoded」 - 請參閱['.ajax()']上的** processData **(https://api.jquery.co米/ jQuery.ajax /)。根據該頁面,它仍然應該是UTF-8。也許嘗試設置'processData:false'。此外,該頁面上的例子使用'data:{name:「John」,location:「Boston」}' – andyb

回答

0

解決方案是使用的[

encodeURIComponent(Name) 
+1

您能否詳細說明您的答案並將其放到問題的背景中?謝謝。 – mjhm