在Java Web中setContentType与setCharacterEncoding中设置字符编码格式的区别

通用解释

setCharacterEncoding只是设置字符的编码方式

setContentType除了可以设置字符的编码方式还能设置文档内容的类型

详细区别

  1. request.setCharacterEncoding(“utf-8”);

是设置从request中取得的值或从数据库中取出的值,

比如我在浏览器输入中文,在表单提交,浏览器是UTF-8编码,获取到的值在后台,如果你在代码中没有加上request.setCharacterEncoding(),输出格式又不是UTF-8的话,就会输出问好,加上设置编码的代码,就会输出正确的中文。

由此可得,request.setCharacterEncoding(“utf-8”)是设置请求的编码格式,让下面的代码知道requset中的数据要以什么编码进行解析。

  1. response.setCharacterEncoding(“utf-8”);

由1可知,setCharacterEncoding是设置编码格式的,那requset和response的设置有什么区别,response的设置编码具体又有什么作用和体现呢?

response.setCharacterEncoding(“utf-8”)是设置HTTP响应的编码,是告诉服务器,响应里面的数据和信息现在是UTF-8格式,这时候响应被返回前端的话,直接用UTF-8解码,就可以显示出正确的中文数据。

  1. response.setContentType(“text/html;charset=utf-8”);

response.setContentType(“text/html;charset=utf-8”)是用来告诉用户的浏览器或相关设备,如何显示将要加载的数据,或者如何处理将要加载的数据页面的编码方式的。

contentType的charset是指服务器发送给客户端时的内容编码。

因为浏览器很强大,你几乎返回什么他都能给你解析出来,比如图片,或者PDF,当然还有网页。

这一切的前提是你得告诉它你传的的是什么:

  • 这时候就是第一个参数的作用:

    text/html的意思是将文件的content-type设置为text/html的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
  • 第二个参数也是设置编码格式:

    基本上和setCharacterEncoding是一个作用,我做过实验,在2中,我只设置setCharacterEncoding和只设置content-type前端都能正常显示,都不加就会显示乱码。

setCharacterEncoding和setContentType在字符设置上的优先级。

response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用 response.setCharacterEncoding指定的编码格式覆盖之前的设置。

就是response.setCharacterEncoding的优先级比setContentType高。

使用注意事项

与response.setContentType相同的是,调用setCharacterEncoding方法,必须在getWriter执行之前或者response被提交之前。

总之就是,先设置,再使用。

是学生,正在学习,自己遇到的问题写点博客,如有错误,请谅解,如果发现了错误可以评论一下。

在Java Web中setContentType与setCharacterEncoding中设置字符编码格式的区别的更多相关文章

  1. 转:Java Web 项目发布到Tomcat中三种部署方法

    首先整理项目文件,文件内包含jsp.js等和class编译后的文件及lib包,如: 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:   ...

  2. Java Web 项目发布到Tomcat中三种部署方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,节点中添加: <Context path="/" docBase="E:\TOMCAT\a ...

  3. JAVA WEB 过滤器(Filter)中向容器 Spring 注入 bean

    如果直接使用 @Autoware 获取 bean 会直接使该 bean 为 null,这是因为这种配置过滤器的方法无法在过滤器中使用 Spring bean,因为 Filter 比 bean 先加载, ...

  4. servlet setCharacterEncoding setHeader 设置字符区别

    1. response.setCharacterEncoding("UTF-8"); 设置内容的字符集 2. response.setHeader("content-ty ...

  5. java web项目导入到eclipse中变成了java项目的一种情况的解决办法

    前提,我把代码上传到github上之后,在另外一台电脑上拉下之后,先报出现的是jre不对,然后换成了当前的jre,然后红色的感叹号消失了但是之前项目上那个小地球不见了,也就是说变成了java项目. - ...

  6. (备忘)Java web项目迁移到Centos7中验证码无法显示

    每天多学一点知识. 今天部署项目的时候出现验证码无法显示的问题,如下图所示:

  7. java web项目去除项目名称访问设置方法及tomcat的<Host>标签讲解

    本文为博主原创,未经允许不得转载. 在集群项目中,为了方便用户可以更快捷的访问,即只需要输入IP和端口号,就可以直接访问项目,因为 模块比较多,记住项目名称并不容易,所以在网上查看和学习了下设置的方法 ...

  8. Java Web开发 之小张老师总结GET和POST区别

    get和post区别1.传输方式不同,get在request-line中传输(即在URL中传输).post在request-line及 request-body中传输(可认为隐藏传输)2.get传输长 ...

  9. JavaScript中.、[]与setAttribute()在设置属性上的区别

    .和[] javaScript.和[]既可以对所有js对象设置属性,但是对于DOM对象它设置的属性有些特殊.对于元素DOM标准属性,实现属性值的设置/更改;对于元素DOM非标准属性,仅在js中有效,在 ...

  10. 怎么将java web 项目导入idea 中

    1.将 java web 项目导 入idea 中, 显示 然后进行 Configure 配置. 2. 点击 open module settings. 3. 4. 选择jar包. 5. 6. 配置to ...

随机推荐

  1. C++ 由快排学习到的的随机数等知识

    起: 力扣的912题 数组排序 ,想着先用快速排序来写写,在实际用c++编写的时候,有一些之前没注意到的细节问题造成了一些麻烦. 912. 排序数组 - 力扣(LeetCode) 快排思想 每次以数组 ...

  2. Python数据科学手册-Numpy数组的排序

    1)  Numpy中的快速排序: np.sort  和 np.argsort np.sort 是快速排序,算法复杂度 O[ N log N] ,也可以选择归并排序和堆排序 如果不想修改原始输入数组,返 ...

  3. 第六章:Django 综合篇 - 2:核心配置项

    Django的默认配置文件中,包含上百条配置项目,其中很多是我们'一辈子'都不碰到或者不需要单独配置的,这些项目在需要的时候再去查手册. 强调:配置的默认值不是在settings.py文件中!不要以为 ...

  4. IDE->Gitlab->Gitlab CI/CD->Docker->K8S流程

    前提条件: Gitlab,Gitlab CI/CD,Nexus,K8S 步骤流程: 1.开发人员IDE上传更新代码到Gitlab 2.Gitlab收到用户提交的更新后会自动CI/CD,并创建Docke ...

  5. jq判断页面滚动条进行样式修改

    $(window).scroll(function(){//窗口的滚动条 if($(window).scrollTop()>100){ //垂直滚动条钓offset 大于90时. $(" ...

  6. Python 实验报告(第三周)

    一.实验目的和要求 1.熟练运用常见选择结构: 2.熟练运用for循环和while循环: 3.理解带else语句的循环结构执行过程和break.continue语句在循环中的作用. 二.实验环境 软件 ...

  7. Java中的多线程的创建方式

    首先理清几个基本概念: 程序:为完成特定任务,用某种语言编写的一组指令的集合.即一段静态的代码(还没运行起来) 进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源 ...

  8. ARC144 D - AND OR Equation

    ARC144 D - AND OR Equation Solution 首先可以猜测和答案仅和每一个二进制位以及\(f(0)\)有关系,不妨把按位\(\operatorname{AND}\)和按位\( ...

  9. 消除两个inline-block元素之间的间隔

    发现问题 两个inline-block元素之间的间隔.如下图 期望 消除两个inline-block元素之间的间隔. 解决方法 1.父元素字体大小设置为0 间隔的形成是非元素标签形成的 /** 方案1 ...

  10. 实现etcd服务注册与发现

    转载自:实现etcd服务注册与发现 0.1.目录结构 . ├── api │   └── main.go ├── common │   └── common.go ├── docker-compose ...