歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Servlet 中文亂碼問題及解決方案剖析

一、常識了解

 

1.GBK包含GB2312,即如果通過GB2312編碼後可以通過GBK解碼,反之可能不成立;

2.java.nio.charset.Charset.defaultCharset() 獲得平台默認字符編碼;

3.getBytes() 是通過平台默認字符集進行編碼;

 

二、中文亂碼出現

 

在學習任何一門技術時,經常會有初學者遇到中文亂碼問題,比如MySQL,是因為在安裝時沒有設置;而在Servlet中,也會遇到中文亂碼問題;

比如:

OutputStream out = response.getOutputStream();

out.write(String );

輸出中文時可能會出現亂碼;

比如:

[java]
  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  2.           
  3.         OutputStream out = response.getOutputStream();  
  4.         String data = "博客";  
  5.         out.write(data.getBytes("UTF-8"));  
  6.     }  

輸出亂碼的問題是程序用UTF-8編碼,而浏覽器用GB2312解碼,因此會出現亂碼;

 

三、解決中文亂碼

 

在網上很有效的解決方法是添加:

response.setCharacterEncoding("UTF-8");

解決不了,後來又搜到一條解決方法是:

respnse.setHeader("content-type","text/html;charset=UTF-8");

兩句都填上,後來終於解決了這個問題;

其實我們應該思考一下本質;

Copyright © Linux教程網 All Rights Reserved