ajax - php端接收到的來自Javascript的Latin1編碼長度變長了,轉為16進位時發現多了0xC2,0xC3等

來源:互聯網
上載者:User
';    echo $username_php;    echo '
'; echo strlen($username_php); echo '
'; echo bin2hex($username_php); echo '
';?>

該代碼JS端自主輸出的
sha1_Latin:>6Gjº>%qxPÂlÐØ / /此段為sha1(“abc”)產生的字串
Latin.len:20
hex:a9993e364706816aba3e25717850c26c9cd0d89d//此段為sha1_Latin的16進位字串形式,可以確定此處的hex轉換是正確的

而通過AJAX傳輸到php後在瀏覽器端輸出的
>6Gjº>%qxPÂlÐØ //此處看著仍和前面的sha1_Latin對應
29//此處的長度不對應了
c2a9c2993e364706c2816ac2ba3e25717850c3826cc29cc390c398c29d//轉換為16進位發現和前面的hex不一樣,觀察發現多了一些c2,c3,請問是為什嗎?????

回複內容:

';    echo $username_php;    echo '
'; echo strlen($username_php); echo '
'; echo bin2hex($username_php); echo '
';?>

該代碼JS端自主輸出的
sha1_Latin:>6Gjº>%qxPÂlÐØ / /此段為sha1(“abc”)產生的字串
Latin.len:20
hex:a9993e364706816aba3e25717850c26c9cd0d89d//此段為sha1_Latin的16進位字串形式,可以確定此處的hex轉換是正確的

而通過AJAX傳輸到php後在瀏覽器端輸出的
>6Gjº>%qxPÂlÐØ //此處看著仍和前面的sha1_Latin對應
29//此處的長度不對應了
c2a9c2993e364706c2816ac2ba3e25717850c3826cc29cc390c398c29d//轉換為16進位發現和前面的hex不一樣,觀察發現多了一些c2,c3,請問是為什嗎?????

因為字串被轉碼成別的編碼了。你有沒有發現前面添加c2c3的都是那些大於等於0x80的編碼字元?

解決方案,設定頁面編碼、傳輸編碼、PHP接收編碼一致,都為Latin1,以防止瀏覽器或PHP自動轉碼

為什麼不傳 a9993e364706816aba3e25717850c26c9cd0d89d 這個字串呢?

xmlhttp1.open("GET","web/tes.php?sha1_html="+sha1_hex,false);//發送G給伺服器xmlhttp1.send();document.write(xmlhttp1.responseText);
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.