1. 程式人生 > 程式設計 >Java Servlet輸出中文亂碼問題解決方案

Java Servlet輸出中文亂碼問題解決方案

1.現象:位元組流向瀏覽器輸出中文,可能會亂碼(IE低版本)

private void byteMethod(HttpServletResponse response) throws IOException,UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    outputStream.write(date.getBytes();
  }

原因:伺服器端和瀏覽器端的編碼格式不一致。

解決方法:伺服器端和瀏覽器端的編碼格式保持一致

private void byteMethod(HttpServletResponse response) throws IOException,UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    // 瀏覽器端的編碼
    response.setHeader("Content-Type","text/html;charset=utf-8");
    // 伺服器端的編碼
    outputStream.write(date.getBytes("utf-8"));
  }

或者簡寫如下

private void byteMethod(HttpServletResponse response) throws IOException,UnsupportedEncodingException {
    String date = "你好";
    ServletOutputStream outputStream = response.getOutputStream();
    // 瀏覽器端的編碼
    response.setContentType("text/html;charset=utf-8");
    // 伺服器端的編碼
    outputStream.write(date.getBytes("utf-8"));
  }

2.現象:字元流向瀏覽器輸出中文出現 ???亂碼

private void charMethod(HttpServletResponse response) throws IOException {
    String date = "你好";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

原因:表示採用ISO-8859-1編碼形式,該編碼不支援中文

解決辦法:同樣使瀏覽器和伺服器編碼保持一致

private void charMethod(HttpServletResponse response) throws IOException {
    // 處理伺服器編碼
     response.setCharacterEncoding("utf-8");
    // 處理瀏覽器編碼
     response.setHeader("Content-Type","text/html;charset=utf-8");
    String date = "中國";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

注意!setCharacterEncoding()方法要在寫入之前使用,否則無效!!!

或者簡寫如下

private void charMethod(HttpServletResponse response) throws IOException {
    response.setContentType("text/html;charset=GB18030");
    String date = "中國";
    PrintWriter writer = response.getWriter();
    writer.write(date);
  }

總結:解決中文亂碼問題使用方法 response.setContentType("text/html;charset=utf-8");可解決字元和位元組的問題。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。