我正在研究一個應用程序,我需要能夠從JavaScript向PHP發送字符串。起初,我剛剛通過$_POST
變量發送了它,但我注意到它將值插入字符串中。PHP將無意義的字符插入到字符串中
然後我重新編寫了兩個部分,使用base 64發送數據,因爲我認爲數據在傳輸過程中被損壞。這個字符串被轉移的很好,沒有錯誤,但是當我將它從base 64轉換回base 16時,它有和以前完全相同的錯誤!
這是兩個字符串(十六進制轉儲)的比較。每個字符串中有兩塊有意義的數據塊,看起來PHP只是在這些區域附近出錯。第一行是PHP如何解釋字符串,第二行是我如何從JavaScript發送它。
c2 b0 c2 a7 c3 9a 7a 00 00 00 c2 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0 a7 da 7a 00 00 00 00 00 00 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
爲什麼會出現這些幻像字節?
編輯:這裏是我使用的代碼。
的JavaScript:
function sendRequest(body)
{
var url = "../update/index.php";
$.post(url,{msg:body},function(data,status,jqx)
{
$("#response").html(data);
});
}
body
是一個字符串,它開始是硬編碼爲"\u00b0\u00a7\u00da\u007a"
。
然後在PHP:
$msg =$_POST['msg'];
plain_hex_dump($msg);
plain_hex_dump
簡單地將字符串輸出作爲十六進制,從而導致第一的兩個六角形的上述轉儲。
你能告訴我們你的代碼嗎? – Sampson
我已更新帖子。但是,我認爲這個問題可能來自我不理解的一些編碼概念。我很確定我的JavaScript代碼不會生成使用多個字節的字符。 –