var sha1=CryptoJS.SHA1("abc");document.write("sha1:",sha1);document.write("
");var sha1_Latin=sha1.toString(CryptoJS.enc.Latin1);document.write("sha1_Latin:",sha1_Latin);document.write("Latin.len:",sha1_Latin.length);document.write("
");var sha1_hex=strToHex(sha1_Latin);//此處為自己定義的一個函數,將html' target='_blank'>字符串轉換為ASCII的16進制形式document.write("hex:",sha1_hex);document.write("
");var xmlhttp1;if (window.XMLHttpRequest) { xmlhttp1=new XMLHttpRequest(); }else { xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP"); }xmlhttp1.open("GET","web/tes.php?sha1_html="+sha1_Latin,false);//發送給php xmlhttp1.send(); document.write(xmlhttp1.responseText);
';echo strlen($username_php);echo '
';echo bin2hex($username_php);echo '
';?>
瀏覽器的工作字符集是 unicode
傳入的任何字符集內容都將在瀏覽器中自動轉換成 unicode
比如
$gbk = '中文';$utf8 = iconv('gbk', 'utf-8', $gbk);if(isset($_GET['ch'])) { echo "utf8 = '$utf8'; document.write(gbk == utf8);";}else { echo ""; echo "";}打印 true
瀏覽器的工作字符集是 unicode
傳入的任何字符集內容都將在瀏覽器中自動轉換成 unicode
感謝指導,我在PHP端將寫成如下代碼,則SS和JS端生成的sha1_html完全一樣了,不過還是沒太完全理解你的意思,你是說從瀏覽器端發送到PHP端的Latin1編碼被自動轉換成了UTF-8?所以我在PHP端將接收到的數據的編碼模式由UTF-8轉換成Latin1模式以后就正確了?
那么我還有個疑問,就是我echo $SS;返回到瀏覽器端的字符編碼模式也會被自動轉換為UTF-8,我需要再將其在瀏覽器端轉換成Latin1模式?
我寫了下面的php端代碼
';echo strlen($SS);echo '
';echo bin2hex($SS);echo '
';?>
不大理解你的疑問
瀏覽器會將收到的文本數據轉成 unicode
瀏覽器在發送數據(比如表單提交)時會將 unicode 轉成頁面聲明的字符集
如果你在 php 中按字節處理數據,那么要想得到和 js 處理相同的結果
需要將待處理的文字轉成 ucs-2 字符集
不大理解你的疑問
瀏覽器會將收到的文本數據轉成 unicode
瀏覽器在發送數據(比如表單提交)時會將 unicode 轉成頁面聲明的字符集
如果你在 php 中按字節處理數據,那么要想得到和 js 處理相同的結果
需要將待處理的文字轉成 ucs-2 字符集
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答