国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

關(guān)于Latin1編碼在JS和php端不一致問(wèn)題

2020-03-22 18:33:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
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);//此處為自己定義的一個(gè)函數(shù),將html' target='_blank'>字符串轉(zhuǎn)換為ASCII的16進(jìn)制形式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);//發(fā)送給php xmlhttp1.send(); document.write(xmlhttp1.responseText);

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



該代碼端JS自主輸出的
sha1_Latin: / /此段為sha1(“abc”)生成的字符串,CSDN提示有特殊符號(hào),此處輸出省略
Latin.len:20
hex:a9993e364706816aba3e25717850c26c9cd0d89d//此段為sha1_Latin的16進(jìn)制字符串形式,可以確定此處的hex轉(zhuǎn)換是正確的

而通過(guò)AJAX傳輸?shù)絧hp后在瀏覽器端輸出的
? //此處看著仍和前面的sha1_Latin對(duì)應(yīng),CSDN提示有特殊符號(hào),此處輸出省略
29//此處的長(zhǎng)度不對(duì)應(yīng)了
c2a9c2993e364706c2816ac2ba3e25717850c3826cc29cc390c398c29d//轉(zhuǎn)換為16進(jìn)制發(fā)現(xiàn)和前面的hex不一樣,觀察發(fā)現(xiàn)多了一些c2,c3,請(qǐng)問(wèn)是為什么?????


回復(fù)討論(解決方案)

瀏覽器的工作字符集是 unicode
傳入的任何字符集內(nèi)容都將在瀏覽器中自動(dòng)轉(zhuǎn)換成 unicode
比如

$gbk = '中文';$utf8 = iconv('gbk', 'utf-8', $gbk);if(isset($_GET['ch'])) {  echo "utf8 = '$utf8'; document.write(gbk == utf8);";}else {  echo "";  echo "";}
打印 true


瀏覽器的工作字符集是 unicode
傳入的任何字符集內(nèi)容都將在瀏覽器中自動(dòng)轉(zhuǎn)換成 unicode


感謝指導(dǎo),我在PHP端將寫(xiě)成如下代碼,則SS和JS端生成的sha1_html完全一樣了,不過(guò)還是沒(méi)太完全理解你的意思,你是說(shuō)從瀏覽器端發(fā)送到PHP端的Latin1編碼被自動(dòng)轉(zhuǎn)換成了UTF-8?所以我在PHP端將接收到的數(shù)據(jù)的編碼模式由UTF-8轉(zhuǎn)換成Latin1模式以后就正確了?
那么我還有個(gè)疑問(wèn),就是我echo $SS;返回到瀏覽器端的字符編碼模式也會(huì)被自動(dòng)轉(zhuǎn)換為UTF-8,我需要再將其在瀏覽器端轉(zhuǎn)換成Latin1模式?
我寫(xiě)了下面的php端代碼

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

不大理解你的疑問(wèn)

瀏覽器會(huì)將收到的文本數(shù)據(jù)轉(zhuǎn)成 unicode
瀏覽器在發(fā)送數(shù)據(jù)(比如表單提交)時(shí)會(huì)將 unicode 轉(zhuǎn)成頁(yè)面聲明的字符集

如果你在 php 中按字節(jié)處理數(shù)據(jù),那么要想得到和 js 處理相同的結(jié)果
需要將待處理的文字轉(zhuǎn)成 ucs-2 字符集

不大理解你的疑問(wèn)

瀏覽器會(huì)將收到的文本數(shù)據(jù)轉(zhuǎn)成 unicode
瀏覽器在發(fā)送數(shù)據(jù)(比如表單提交)時(shí)會(huì)將 unicode 轉(zhuǎn)成頁(yè)面聲明的字符集

如果你在 php 中按字節(jié)處理數(shù)據(jù),那么要想得到和 js 處理相同的結(jié)果
需要將待處理的文字轉(zhuǎn)成 ucs-2 字符集



 

我將收到的sh轉(zhuǎn)換為SS后,可以輸出true,但是我把echo $SS返回到瀏覽器端var mm=xmlhttp1.responseText.substring(4);則出現(xiàn)mm和JS端sha1不一樣(轉(zhuǎn)換出來(lái)的16進(jìn)制字符串也不一樣),我按照您的指點(diǎn),將此處mm理解為unicode模式,我試著將它轉(zhuǎn)換成Latin1編碼結(jié)果一直也不成功。

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 樟树市| 凉城县| 宿松县| 金川县| 抚顺市| 金坛市| 麦盖提县| 祁门县| 广水市| 鹤岗市| 永清县| 普定县| 璧山县| 麻栗坡县| 合作市| 栾川县| 杭锦旗| 韶山市| 清镇市| 醴陵市| 昌都县| 温宿县| 太谷县| 邵东县| 利川市| 年辖:市辖区| 阳曲县| 汪清县| 闻喜县| 白朗县| 西平县| 安福县| 卓资县| 涪陵区| 西城区| 河南省| 色达县| 柞水县| 榕江县| 临沂市| 饶河县|