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编码格式保持一致。

  • 相关阅读:
    ES6中的find与filter的区别
    centos7上搭建http服务器以及设置目录访问
    JSON.parse()和JSON.stringify()的用法
    video 在iphone手机的ios系统和微信端无法自动播放
    JavaScript规范----DOM操作
    http与https的区别
    vw vh 的概念
    JS实现数组排序:升序和降序
    用Vue来实现音乐播放器(二十三):音乐列表
    JavaScript对象---递归遍历对象
  • 原文地址:https://www.cnblogs.com/quxiangxiangtiange/p/6278862.html
Copyright © 2011-2022 走看看