【Servlet】Response的OutputStream与Writer输出数据乱码的问题

原创 2016年05月30日 17:41:03

OutputStream输出中文数据乱码问题解决方式:

package cn.lsh.servlet;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Response的OutputStream输出中文数据问题
public class Response extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//指定以UTF-8编码,那么就要指定浏览器以UTF-8解码,总之,编码与解码要相同,否者就会出现乱码。
		//注意:第二个参数中间不要写成“,”否则当访问Servlet时会出现提示下载的情况。
		response.setHeader("content-type", "text/html;charset=utf-8");
		String str = "中国,我爱你";
		OutputStream out = response.getOutputStream();
		out.write(str.getBytes("utf-8"));//指定以UTF-8编码。
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

Writer输出数据乱码的问题解决方法:

以下是没有指定浏览以UTF-8码表打开所以导致浏览器输出乱码:

package cn.lsh.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Response的OutputStream输出中文数据问题
public class Response extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//指定以UTF-8编码,那么就要指定浏览器以UTF-8解码,总之,编码与解码要相同,否者就会出现乱码。
		//注意:第二个参数中间不要写成“,”否则当访问Servlet时会出现提示下载的情况。
		
		//设置response使用utf-8码表,以控制response以什么码表向浏览器写出数据
		response.setCharacterEncoding("UTF-8");
		/*
		//指定浏览器以什么码表打开服务器发送的数据
		response.setContentType("text/html;charset=utf-8");
		*/
		String str = "中国,我爱你";
		PrintWriter pw = response.getWriter();
		pw.write(str);
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}
浏览器输出结果为:


以下指定浏览以UTF-8码表打开所以浏览器输出中文数据正常:

package cn.lsh.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Response的OutputStream输出中文数据问题
public class Response extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//指定以UTF-8编码,那么就要指定浏览器以UTF-8解码,总之,编码与解码要相同,否者就会出现乱码。
		//注意:第二个参数中间不要写成“,”否则当访问Servlet时会出现提示下载的情况。
		
		//设置response使用utf-8码表,以控制response以什么码表向浏览器写出数据
		response.setCharacterEncoding("UTF-8");
		
		//指定浏览器以什么码表打开服务器发送的数据
		response.setContentType("text/html;charset=utf-8");
		
		String str = "中国,我爱你";
		PrintWriter pw = response.getWriter();
		pw.write(str);
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

输出结果正常:



版权声明:转载请注明出处:http://blog.csdn.net/u010143291

Servlet中直接response.getWriter().write() 输出乱码解决!

基础环境 项目编码:utf-8 页面编码:utf-8 请求类型:Post Demo1:Servlet核心代码request.setCharacterEncoding("UTF-8"...
  • u014424628
  • u014424628
  • 2016年01月26日 21:40
  • 14084

解决FileOutputStream中文乱码问题

使用FileOutputStream反序列化可以直接向文件写入文本内容,代码如下:FileOutputStream outStream = new FileOutputStream(file); ou...
  • u011421608
  • u011421608
  • 2016年03月24日 15:44
  • 14971

JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决方法

JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决方法 博客分类:  JSP & Servlet javaservletcsvexcel乱码  Jav...
  • LoveTea99
  • LoveTea99
  • 2016年07月28日 12:05
  • 548

response常见应用(中文数据乱码解决,中文文件下载,随机图片等)

1.Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 2.request和response对象即然代表请求和响...
  • itEvanLiu
  • itEvanLiu
  • 2013年03月19日 13:18
  • 4449

在servlet中用outputStream输出数据的问题,以及输出中文的问题

在servlet中用outputStream输出数据的问题,以及输出中文的问题
  • cckevincyh
  • cckevincyh
  • 2016年09月09日 15:14
  • 3892

response实现案例之向页面输出中文解决乱码问题

1.向页面输出中文(乱码问题)                 1.1字节:                      ServletOutputStream getOutputStream()   ...
  • u010853261
  • u010853261
  • 2016年01月28日 22:00
  • 1491

在servlet中用outputStream输出数据以及中文数据的问题

在servlet中用outputStream输出数据以及中文数据的问题 今天学习了servlet中比较重要的一个知识点,在servlet中用reponse对象的outputStream输出数据以...
  • lixiangmao
  • lixiangmao
  • 2013年12月06日 15:39
  • 1486

【Excel】java 导出Excel 中文文件名乱码不显示问题

在使用Java 导出Excel 等报表时,对于中文文件名,会出现不显示中文或者中午乱码的问题。此问题的解决方案比较简单,将要返回的中文文件名做iso-8859-1 转码即可。 【问题...
  • zgf19930504
  • zgf19930504
  • 2016年09月23日 11:13
  • 8041

Java使用System.out.print()输出中文成乱码的问题

网上关于这个的说法挺多,大多集中在jsp部分,也就是和网络有关系。但有些同学其实就是普通的程序,就成乱码了,开始以为和自己安装的MySQL有关,其实没有。经过参考这篇文章: http://luzef...
  • jt120
  • jt120
  • 2013年04月09日 12:23
  • 8616

PrintWriter返回乱码的分析及解决

用response得到输出流,即response.getOuptStream(); 返回值为ServletOutputStream 对象,即JSP的out对象,要么用response得到输出对象Pri...
  • csdnchen666666
  • csdnchen666666
  • 2017年04月19日 14:44
  • 469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Servlet】Response的OutputStream与Writer输出数据乱码的问题
举报原因:
原因补充:

(最多只允许输入30个字)