引入JS文件造成的亂碼問題
Filter造成的亂碼問題
信息輸出到數據庫造成的亂碼問題
起初遇到這些亂碼問題的時候,還以爲是一個方面的問題導致的亂碼。但是在解決一個亂碼,又碰到另一個亂碼的時候,真的是感覺幹啥啥不行,亂碼第一名。
第一次遇見是在註冊頁面,源代碼裏在是一個 innerHTML中,源文件中發現之後,首先改了一下innerHTML 的值,發現英文可以正常顯示。F12檢查一下,結果發現引入的JS文件中所有的中文都是亂碼。 打開Eclipse查看我們的JS源文件,中文顯示正常,但是在 檢查 中發現引入的文件中文都是亂碼,查看編碼方式,文件中是UTF-8,頁面的編碼方式也是UTF-8,那麼問題出現在哪裏了呢? 問了老師,問了百度,最終在歷經千辛萬苦之後,找到了正確方法!
首先建立一個txt文件,將JS文件代碼全部複製,之後在txt文本文件中把JS文件中的代碼粘貼過來,把編碼方式設置爲 帶BOM的UTF-8。然後重命名並覆蓋源文件,重啓tomcat服務器,就可以發現提示的文字已經從亂碼變成中文了!
首先貢獻出地址欄:
但是,如果我們用了Filter處理了GET和POST請求的亂碼,那麼我們這個時候就會發現一些問題,原本需要的頁面效果沒有出來,出來的卻是這樣的效果:
看到這??,我腦門上就是??,怎麼就出現這種情況了呢?由於這個我們在做這個項目之前爲了防止中文亂碼寫了一個EncodingFilter,當然,遇到這麼多中文亂碼問題的時候我也懷疑過這個Filter的實用性,但是沒有進行更改。後來在老師和同學的幫助下,想起來我用的服務器是tomcat 8.5,已經不是8.0以前的版本了,GET方法(我的Servlet都寫在GET方法裏了 )的編碼方式已經默認是UTF-8了,而我的EncodingFilter中又對GET方法進行處理,把GET方法的編碼默認爲 ISO-8859-1 ,強行轉碼,所以造成了request獲取亂碼,在EncodingFilter中把這些東西註釋掉就可以了。
values[i] = new String(values[i].getBytes("ISO-8859-1"),"utf-8");