zoukankan      html  css  js  c++  java
  • setLocale(java.util.Locale), setCharacterEncoding(java.lang.String),setContentType(java.lang.String type)

    对于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的响应消息,从而肯能会导致乱码。

  • 相关阅读:
    Maven中使用描述文件切换环境配置
    整合MyBatis到Spring中实现Dao层自动装配
    使用MyBatis搭建项目时报 java.io.IOException: Could not find resource
    数据库CPU占用高排查
    JS 根据时区获取时间
    国外服务器 winserver2012 安装IIS后,安装urlrewrite模块总是自动停止应用程序池
    sql中char(9) char(10) char(13)
    通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER
    SDL 当前连接查询脚本
    C# System.Drawing.Graphics 画图后,如何保存一个低质量的图片,一个占用空间较小的图片
  • 原文地址:https://www.cnblogs.com/xxNote/p/7010569.html
Copyright © 2011-2022 走看看