正確處理含有中文的url以便被php解析

最近有同事項目上出了個問題,協助解決了一下。

在java系統中(部署在AIX上)傳遞中文數據信息到RTX(部署在windows上)的cgi處理端,發現中文信息無法被正確識別。經過驗證,發現是因爲字符集的設置所致。因爲採取的是顯式傳值的方式 ,即把信息寫在url中,因爲是跨操作系統,所以cgi(php做的)沒有正確的解析請求的url中的中文。

解決方法:在java中初始化url類時,將url字符串中的中文進行編碼,即encode一下,這樣舊能正確傳遞了,在php那邊也不用解碼就能直接正確獲得java編碼後的中文。

其實,這個方法也有個不足,這裏encode時沒有指定字符集,即使用的是系統默認的字符集,這樣就對操作系統具有倚賴性,假如AIX默認字符集被修改成一種windows不支持的,那麼有可能無法傳遞數據,最穩妥的方法,個人認爲還是兩邊都進行顯式的字符集指定,即java編碼時使用encode(str,charset)方法,而php解碼時也指定解碼的字符集,兩邊指定的字符集當然要一樣,這裏是因爲php和java都是支持的url的標準編碼規範,所以可以這樣做。對於顯式指定字符集的encode,也是jdk1.4之後被推薦使用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章