zoukankan      html  css  js  c++  java
  • JavaWeb开发中的乱码问题

    一,获取系统平台的默认编码

      获取系统平台的默认编码:

      String encoding=System.getProperty("file.encoding");

      注:至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),

        中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。

        GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。

        GBK编码是GB2312编码的扩展,包括简体中文和繁体中文,兼容GB2312.

    二,服务器端指定字符编码向浏览器发送数据,并指定浏览器以指定字符编码打开


           第一步: resp.setCharacterEncoding("utf-8");//服务器以指定字符编码向浏览器发送信息

       第二步:resp.setHeader("content-type","text/html;charset=utf-8");//让浏览器以指定字符编码打开服务器发送过来的信息

      当浏览器的默认编码与服务器指定的字符编码相同时,此时不需要第二步。

    三,下载中文文件时,遇到文件名乱码问题的解决方案

         String path=this.getServletContext().getRealPath("/img/我的照片.JPG");
            String fileName=path.substring(path.lastIndexOf("\")+1);

       resp.setHeader("content-disposition","attachment;filename="+new String( fileName.getBytes(),"iso8859-1") );

    四,表单提交数据,在服务器端接收到的数据乱码

        这种情况通常是浏览器编码格式与服务端解码格式不一致导致的。如jsp页面编码格式是utf-8,而服务器编解码是GBK格式。

        如服务端收到的参数:String validate=req.getParameter("validateCode");

       (1)当表单以post方式提交时,可以直接用resquest.setCharacterEncoding("utf-8")的方法;         

       (2)当表单以get方式提交时,用下面的方法。

         validate=new String(validate.getBytes("iso8859-1"),"UTF-8");

        此时以“UTF-8”解码是因为jsp页面的编码格式是"UTF-8",必须与jsp编码格式保持一致。

  • 相关阅读:
    Zuul token FIlter 验证失败结果输出
    springboot 使用 dev tool 导致 CastException
    索引失效的情况汇总
    JVM笔记-GC常用参数设置
    关于gdb和shp的FID问题
    配置mac百度云同步盘
    【python常用函数1】
    【python环境配置1】 环境变量与常用模块
    【nodejs笔记——小知识点汇总】
    ArcGIS标注
  • 原文地址:https://www.cnblogs.com/quxiangxiangtiange/p/6278862.html
Copyright © 2011-2022 走看看