歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Servlet 中文亂碼問題及解決方案剖析

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

日期:2017/3/1 10:36:03   编辑:Linux編程

一、常識了解

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. OutputStream out = response.getOutputStream();
  3. String data = "博客";
  4. out.write(data.getBytes("UTF-8"));
  5. }

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

三、解決中文亂碼

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

response.setCharacterEncoding("UTF-8");

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

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

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

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

Copyright © Linux教程網 All Rights Reserved