真奇怪,今天編碼遇到好幾個(gè)問(wèn)題,把重要的幾個(gè)記下來(lái)吧:
1。首先看下面一段代碼:
<A onclick=”javascript:window.location.href=’yahoo.com’ ” href=”sohu.com” >Click Me!</A>
瀏覽器會(huì)跳轉(zhuǎn)到哪個(gè)頁(yè)面?
FireFox和IE都會(huì)先執(zhí)行頁(yè)面JS腳本,然后瀏覽器再跳轉(zhuǎn)到HREF指向的頁(yè)面—sohu.com。如果把代碼改成這樣:
<A onclick=”javascript:window.location.href=’yahoo.com’ ” href=”#” >Click Me!</A>
FireFox和IE還是會(huì)先執(zhí)行頁(yè)面JS腳本,但由于HREF指向的頁(yè)面是”#”,所以瀏覽器會(huì)跳轉(zhuǎn)到y(tǒng)ahoo.com。
2。htmlspecialchars函數(shù)可以把引號(hào)等特殊字符轉(zhuǎn)換成HTML entities, 如何從HTML entities 還原成相應(yīng)的特殊字符呢? PHP5提供了一個(gè)函數(shù)htmlspecialchars_decode,可以做到.在PHP4環(huán)境下,只能通過(guò)下面的方法完成轉(zhuǎn)換:
$trans = get_html_translation_table(HTML_SPECIALCHARS);
$trans = array_flip($trans); //只是必須的,否則會(huì)產(chǎn)生亂碼。
$text = strtr($text, $trans);
3。在構(gòu)造http GET請(qǐng)求的字符串時(shí),如果沒(méi)有把參數(shù)的值用urlencode函數(shù)進(jìn)行處理,可能會(huì)產(chǎn)生字符編碼的問(wèn)題。例如我構(gòu)造了這樣一個(gè)請(qǐng)求,http://yahoo.com/somePage.php?p=$string&u=…,變量$string使用UTF8編碼的,而頁(yè)面是GBK編碼。當(dāng)用戶提交這樣一個(gè)GET請(qǐng)求時(shí),瀏覽器會(huì)把“p=”后面的字符按照GBK編碼來(lái)處理,后果是可能會(huì)把$string的最后一個(gè)字符和緊跟著的字符&結(jié)合,而產(chǎn)生混亂的字符。
用urlencode處理$string字符串后,頁(yè)面上的http GET請(qǐng)求鏈接就不會(huì)有問(wèn)題。服務(wù)器端接受到參數(shù)p的值后,還得用urldecode函數(shù)對(duì)字符串進(jìn)行解碼。
聯(lián)系客服