设为首页 加入收藏

TOP

Java基础之HttpServletResponse响应(二)
2019-08-04 00:10:10 】 浏览:116
Tags:Java 基础 HttpServletResponse 响应
BK,我们可以手动修改浏览器的编码是UTF-8。


我们还可以在代码中指定浏览器解析页面的编码方式,通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8。


response.setContentType("text/html;charset=UTF-8");


 


上面的代码不仅可以指定浏览器解析页面时的编码,同时也内含 setCharacterEncoding的功能,所以在实际开发中只要编写 response.setContentType("text/html;charset=UTF-8"),就可以解决页面输出中文乱码问题。


 


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <a href="/WEB0/DownloadServlet?file=乱码.png">乱码.png</a>
    <a href="/WEB0/DownloadServlet?file=a.txt">a.txt</a>
    <a href="/WEB0/DownloadServlet?file=a.zip">a.zip</a>
</body>
</html>


 


 


import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;


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


import sun.misc.BASE64Encoder;



public class DownloadServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //服务器获取文件名(文件名是中文的话,获取的时候就成了乱码了)
        String filename = request.getParameter("file");//??.png
        //get请求中---解决文件名中文乱码问题
        filename =new String(filename.getBytes("ISO-8859-1"),"UTF-8");//乱码.png
       
        //获取User-Agent获取客户端浏览器到底是哪个浏览器   
        String agent=request.getHeader("User-Agent");
        String filenameEncoder="";
        if (agent.contains("MSIE")) {
                // IE浏览器
                filenameEncoder= URLEncoder.encode(filename, "utf-8");
                filenameEncoder= filenameEncoder.replace("+", " ");
        } else if (agent.contains("Firefox")) {
                // 火狐浏览器
        BASE64Encoder base64Encoder = new BASE64Encoder();
                filenameEncoder= "=?utf-8?B?"
                        + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
                // 其它浏览器
                filenameEncoder= URLEncoder.encode(filename, "

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java基础之网络通信协议--TCP与UDP 下一篇Java基础之HttpServletRequest请求

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目