JavaWeb解決url中中文參數亂碼以及cookie中中文亂碼問題

        今天來專門寫一篇博文記錄JavaSE中的URLEncoder類,因爲已經兩次用這個類解決了自己遇到的棘手問題。第一次是之前做視頻網站的搜索功能的時候,第二次是今天在做登錄功能登錄後錄入中文cookie時出現java.lang.IllegalArgumentException: Control character in cookie value的異常問題,通過該類完美解決了。

        URLEncoder類是JavaSE中java.net包下定義的一個類,我們都知道,JavaSE是Java的基礎,所以學習JavaWeb雖然主要用的是JavaEE,但對JavaSE的知識也要牢牢地掌握好。在JavaSE中,與URLEncoder共存的類還有URLDecoder類,前者是編碼類,後者是解碼類。當遇到中文的時候,使用URLEncoder.encode("","utf-8");方法將url或者cookie中文編碼爲utf-8,在取出的時候使用URLDecoder.decoder("","utf-8");方法將中文解碼取出。

        說了這麼多,感覺還是放到實際應用中更有說服力。接下來我把文首提到的兩個問題羅列出並敘述是如何通過URLEncoder類解決的。

1.在做視頻網站搜索功能的時候,關於搜索關鍵詞的問題苦惱了我半天,當在爬蟲程序中定義中文搜索的時候總是出問題,後來看了爬取的網站,才發現,當你輸入中文搜索的時候,瀏覽器會自動將搜索url中的中文轉化爲十六進制數據,比如

,而通過爬蟲程序是不會自動轉化的,那麼也不會搜索到相應結果。這個時候只有用URLEncoder類才能將中文轉爲需要的內容。

2.今天在做登錄功能登錄後錄入中文cookie出現java.lang.IllegalArgumentException: Control character in cookie value的異常問題,後來在網上搜了下,知道了cookie中不能直接存儲中文,必須在設置cookie的時候使用URLEncoder.encode("","utf-8");方法將中文編碼

 。再在需要取出cookie的時候將cookie中編碼後的內容解碼爲原本的中文。

接下來,一切恢復平靜,cookie中的登錄名也正常顯示了!

說到底,還是中文編碼的問題,一不留神,就因爲編碼問題拋出異常或者顯示奇奇怪怪的字符,以後還是要小心爲妙。

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