对于setCharacterEncoding(java.lang.String),这个方法是javax.servlet.ServletRequest和javax.servlet.ServletResponse都有的。
ServletRequest用它来设置对来自客户端请求的字节流的解码方式,ServletResponse用它来设置发送给客户端的字节流的编码方式。
例如:ServletResponse.setCharacterEncoding("UTF-8");

对于 setContentType(java.lang.String type)方法则是ServletResponse特有的,同样可以设置发送给客户端的字节流的编码方式。
和setCharacterEncoding(java.lang.String)的效果是等效的。
例如:ServletResponse.setContentType("text/html;charset=utf-8");
这两个方法可以重复设置,已最后一次设置的为准。
测试代码如下:

public void service(ServletRequest req, ServletResponse res) {
try {
/* res.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=gbk");
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=gbk");
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=gbk");
res.setContentType("text/html;charset=utf-8");
res.setCharacterEncoding("UTF-8");*/
System.out.println(getClass()+"-service(ServletRequest req, ServletResponse res)");
System.out.println(req);
System.out.println(res);
System.out.println("------------------Writer:--------------");
PrintWriter out = res.getWriter();
System.out.println(out);
out.println("Writer:"+out);
out.println("req.getCharacterEncoding():"+req.getCharacterEncoding());
out.println("res.getCharacterEncoding():"+res.getCharacterEncoding());
out.println("res.getContentType():"+res.getContentType());
out.println("req.getServletContext().getContextPath():"+req.getServletContext().getContextPath());
out.println("测试中文的,哈哈!"); } catch (Exception e) {
System.out.println(e);
}
}

  

对于setLocale(java.util.Locale)这个方法,API文档虽然说也可以设置编码方式但是经测试发现没有效果。
以后研究半天无果,留待以后解决。

发现对于ServletResponse调用setContentType("text/html;charset=UTF-8");比较合适,因为仅仅调用setCharacterEncoding("UTF-8")不会向客户端发送Content-Type:text/html;charset=UTF-8的响应消息,从而肯能会导致乱码。

setLocale(java.util.Locale), setCharacterEncoding(java.lang.String),setContentType(java.lang.String type)的更多相关文章

  1. Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2020-02-06'; nested exception is java.lang.IllegalArgumentException]解决

    今天做springbook项目前端输入日期传到数据库保存报了一下错误 Whitelabel Error Page This application has no explicit mapping fo ...

  2. 将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

    问题描述: java里面时间类型转换成json数据就成这样了: "createTime":{"date":30,"day":3," ...

  3. java.util.concurrent常用类(CountDownLatch,Semaphore,CyclicBarrier,Future)

    CyclicBarrier CyclicBarrier是用来一个关卡来阻挡住所有线程,等所有线程全部执行到关卡处时,再统一执行下一步操作.假设一个场景:每个线程代表一个跑步运动员,当运动员都准备好后, ...

  4. window10, java环境配置完后在cmd,输入java成功了,但为什么输入javac就失败了

    一.Path的配置:按一般的网上教程,配置时都会是复制这段[%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;] win10的都分开显示,还是比较直观,但由于编辑器的原因,所有变 ...

  5. java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception

    在使用ajax主题时出现上述错误的解决办法是将form表单中的action属性值改为*.action后就可以解决.至于为什么会这样不太明白.但是修改action的属性值以后就会出现另一个错误即 对应的 ...

  6. java 面试,如何提升自己的实力,摘自 java web轻量级开发面试教程

    本内容摘自 java web轻量级开发面试教程 其中有一段讲述到了实习经验对找工作的帮助 1.2.2大学阶段的实习经验能帮到你 一般公司在筛选简历时,一个非常重要考察的要点是相关经验的工作年限,说一个 ...

  7. java.util.Date与java.sql.Date

    我数据库里用到了日期类型.用java编程的时候同时import了java.util.*和java.sql.*,发现直接申明Date类型 Date dt; 会报错,查了一下才发现有java.util.D ...

  8. Java 10 的 10 个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  9. Java 10 的 10 个新特性,你颤抖了吗?

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

随机推荐

  1. 【MySQL大系】《Mysql集群架构》

    原文地址(微信):[技术文章]<Mysql集群架构> 本文地址:http://www.cnblogs.com/aiweixiao/p/7258444.html 点击关注微信公众号 1.主要 ...

  2. HashMap源码分析(一)

    前言:相信不管在生产过程中还是面试过程中,HashMap出现的几率都非常的大,因此有必要对其源码进行分析,但要注意的是jdk1.8对HashMap进行了大量的优化,因此笔者会根据不同版本对HashMa ...

  3. ASP.NET MVC 下自定义模型绑定,去除字符串类型前后的空格

    直接贴代码了: SkyModelBinder.cs using System.ComponentModel; using System.Linq; using System.Web.Mvc; name ...

  4. 如何在springboot项目中进行XSS过滤

    简单介绍 XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...

  5. yarn 在Vue框架中的常用命令

    初始化项目 yarn add init 安装vue yarn add vue 安装webpack,webpack-dev-server(是一个小型的Node.js Express服务器) yarn a ...

  6. jsonp 实现前端跨域

    1.基于ajax 发起jsonp 请求. 前端代码: let url = 'http://localhost:8001/'; $.ajax({ type: 'get', dataType: 'json ...

  7. 曝Wi-Fi重大缺陷:你浏览的或是个假网站

    今年央视315晚会上曝光的Wi-Fi探针收集用户信息的热度还未消退,阿里安全专家研究发现了Wi-Fi的重大新问题:基于WPA/WPA2设计上存在的一些缺陷,用户在使用公共Wi-Fi时,被攻击者钓鱼,进 ...

  8. ImageMagick 安装 window10与错误总结

    一般默认安装最新的版本(目前是7.0.8),但是通过测试发现这个版本会报错(ImportError: MagickWand shared library not found.)所以建议安装 im6版本 ...

  9. 科学地增加postgresql最大连接数

    PG配置文件路径 /etc/postgresql/9.3/main/postgresql.conf 首先如何查看最大连接数 This SQL will help you select max_conn ...

  10. gd.so和php_gd2.so 有什么区别

    1.关于gd与gd2有什么区别,可以参加以下的链接,简单来说gd2就是gd的更新版,可以处理更多图像类型 https://stackoverflow.com/questions/3035216/wha ...