Javaweb编程中的乱码问题
?程序中的亂碼問題,主要出現在我們處理中文數據的過程中出現。從瀏覽器向服務器請求數據,服務器返回的數據在瀏覽器中顯示為亂碼。或者是服務器中的java文件用到中文,也有可能會出現亂碼。數據庫在處理數據的時候,也會碰到亂碼問題。
亂碼問題總的來說,就是編碼方式不同造成的,在數據的建立、傳輸、處理以及顯示過程中,如果處理數據的編碼方式不同,就會很容易造成中文的亂碼問題。解決的辦法宏觀上說,就是在數據處理的各個環節都采用統一的編碼方式,這樣就可以避免亂碼問題的發生。
對于JavaWeb編程來說,主要涉及到html、xml、數據庫、java文件、java代碼這幾個部分。我們以“UTF-8”編碼為例,說一些在不同文件中的設置或者代碼的處理。
首先在html文件中,就是要告訴瀏覽器這個html文件編碼方式是UTF-8。代碼應該放在頭文件head中,
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
這就表示這個文件里面的數據都是用UTF-8編碼的,它里面的數據瀏覽器打開的時候就會按照UTF-8編碼處理,如果這些數據發送的服務器,服務器也應該用UTF-8編碼打開。
其次在xml中,一般xml文件的第一句就會設置編碼方式。代碼為:
<?xml version="1.0" encoding="UTF-8"?>
第三就是在數據庫中,以Mysql數據庫為例,在建立數據庫的時候,都會選擇編碼方式,這時就要選擇UTF-8,繼續建立表、字段的時候就可以默認編碼方式,也就是和數據庫保持一致,這樣就能保證這個數據庫中所有的數據都是UTF-8編碼。
第四就是java文件,保證java文件的編碼方式為UTF-8,一般是利用java編程工具的設置,比如myeclipse軟件,就是通過windows---->Preferences,導航中找到general---->Workspace,右側窗口Text file encoding,選擇Other,改變為UTF-8,以后新建立工程其屬性對話框中的Text file encoding即為UTF-8.點擊“ok”保存。當然,還有一些其它的設置方法,這里只列出了其中的一種。對于其它的java編程工具,可以找對應的編碼設置方法進行操作。
第五就是在java文件中的代碼,特別是Javaweb編程的時候,從瀏覽器 取得數據,處理后返回給瀏覽器顯示出來,這時候就需要做一些處理。比如我們開發工具是myeclipse,服務器用自帶的tomcat,由于tomcat默認編碼是ISO-8859-1,所以很容易造成亂碼,處理過程是這樣的。首先把從瀏覽器取到的字符串數據txt轉換為二進制數據,然后在用UTF-8編碼方式還原為字符串。代碼為:
byte[] bytes=txt.getBytes("ISO-8859-1");
String utf8txt=new String(bytes, "UTF-8");
在把UTF-8編碼的字符串utf8txt返回給瀏覽器之前,需要在java代碼中再次指定編碼方式。代碼為:
resp.setContentType("text/html,charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
然后再繼續用html顯示這個數據,代碼為:
resp.getWriter().print("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/></head><body>");
resp.getWriter().print("<strong>"+utf8txt+"</strong>");
resp.getWriter().print("</body></html>");
這樣就能夠保證瀏覽器看到顯示正常的數據。
對于javaweb編程中碰到的亂碼問題一般這些都能夠解決。如果在編程中碰到亂碼問題,我們可以一步步的調試,找出亂碼出現的位置,然后針對性的解決。在java文件中設置斷點,看從瀏覽器拿到的數據是否正常,從數據庫拿到的數據是否正常,從tomcat轉換后的數據是否正常,一直到服務器返回給瀏覽器的數據是否正常這個思路來一步步分析,相信亂碼問題就會很快查到,并找到解決方法。
以上分析是從如鵬網的楊中科老師解決亂碼問題得到的啟發,做了一個小小的總結,希望對碰到亂碼問題的朋友們有所幫助。
轉載于:https://www.cnblogs.com/coodream2009/p/5504842.html
總結
以上是生活随笔為你收集整理的Javaweb编程中的乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: View(视图)——ListView概述
- 下一篇: HDU 2476 String pain