response.getWriter().write()乱码问题

前台代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>广告页面</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>

  <body>
    广告内容,请猛戳这里。<br/>
    <a href="/day09/demo4">点击此处下载</a>
  </body>
</html>

后台代码:

package servlet;

import java.io.IOException;

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

public class RequestDemo4 extends HttpServlet {

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

        response.setHeader("content-type", "text/html; charset=utf-8");
        response.setCharacterEncoding("utf-8");

        String referer = request.getHeader("referer");
        System.out.println("referer == " + referer);

        /*
         * 判断非法链接:
         *     1)直接访问的话referer=null
         *  2)如果当前请求不是来自广告
         */

        if(referer == null || referer.contains("/day09/adv.html")) {
            response.getWriter().write("当前是非法链接,请回到首页。<a href=‘/day09/adv.html‘>首页</a>");
        } else {
            //正确的链接
            response.getWriter().write("资源正在下载...");
        }
    }

}

只是添加了response.setCharacterEncoding("utf-8");并不能防止乱码,还需要设置消息头。response.setHeader("content-type", "text/html; charset=utf-8");

时间: 2024-08-26 13:05:46

response.getWriter().write()乱码问题的相关文章

response.getWriter().print("中文")乱码解决

解决方法是在response.getWriter()前加上response..setContentType("text/html; charset=UTF-8"); 下面是示例代码,注意代码中的红色字体: protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("u

response.getWriter().write(&quot;中文&quot;);乱码问题

起初遇到这个问题,网上几乎所有的建议都是: response.setHeader("Content-type", "text/html;charset=UTF-8");  //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859  response.setCharacterEncoding("UTF-8"); 但我这样设了之后发现依然是乱码,好像编码没有改变,于是 response.getWriter().write(

Requset和Response中的乱码问题

在我们的日常开发中,乱码问题,还是比较经常遇到的,有时候是浏览器端提交的数据到后台乱码了,有时候是后台响应的数据到前台浏览器端展现出现乱码了.下面我们将通过几个简单的例子来说明乱码的由来和解决方式. 一.前台提交的数据到后端乱码了 1.前台采用post方式提交,后端乱码 ①jsp提交数据页面代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="

JavaWeb之response响应中文乱码问题

response向页面响应中文乱码问题  字节流 * 有可能乱码,与中文转换成字节数组.浏览器打开的默认字符编码有关 * 解决方式:将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致 response.setHeader("Content-Type", "text/html;charset=utf-8"); response.getOutputStream().write("张三".getBytes("utf-8"

(转)request和response的中文乱码问题

request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符, 服务器获取到的请求参数的值是乱码; response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码; 乱码产生的原因:不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码 格式不一致造成的. 以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先 将请求参数(字符)转换成字节,也就是编码过程,服务器接

response.getWriter().write()与out.print()的区别

1.首先介绍write()和print()方法的区别:  (1).write():仅支持输出字符类型数据,字符.字符数组.字符串等  (2).print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出 2.介绍response.getWriter()和out的区别:  (1).out和response.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter.  (2

response.getWriter().write()和 response.getWriter().print()的区别

异步上传图片的代码.发现里面用了response.getWriter().print(),故联想到response.getWriter().writer(),经过一番api的查找与实操,总结如下: response.getWriter()返回的是PrintWriter,这是一个打印输出流. response.getWriter().print(),不仅可以打印输出文本格式的(包括html标签),还可以将一个对象以默认的编码方式转换为二进制字节输出 response.getWriter().wri

response.getWriter()和jsp中的out对象的区别

两者的主要区别: 1. 这两个对象的类型是完全不同的:内置对象out的类型是JspWriter:response.getWrite()返回的类型是PrintWriter 2. 获取方式不同:JspWriter是JSP的内置对象,直接使用即可,对象名out是保留字,也只能通过out来调用其相关方法.此外还可以通过内置对象pageContext.getOut();获得:PrintWriter则是在用的时候需要通过内置对象response.getWriter();获得 3. JspWriter的pri

response.getWriter().write()与out.print()的区别(转)

1.首先介绍write()和print()方法的区别: (1).write():仅支持输出字符类型数据,字符.字符数组.字符串等 (2).print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出 2.介绍response.getWriter()和out的区别: (1).out和response.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter. (2).执行