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

  • 相关阅读:
    FOC中的Clarke变换和Park变换详解(动图+推导+仿真+附件代码)
    有感FOC算法学习与实现总结
    永磁同步电机 spmsm 和 ipmsm 的区别总结
    Jekyll 解决Jekyll server本地预览文章not found的问题
    STM32 TIM 多通道互补PWM波形输出配置快速入门
    STM32 TIM1高级定时器配置快速入门
    STM32 ADC多通道规则采样和注入采样
    STM32 时钟树配置快速入门
    STM32 TIM 编码器模式采集编码器信号
    STM32 标准库V3.5启动文件startup_stm32f10xxx.s分析
  • 原文地址:https://www.cnblogs.com/quxiangxiangtiange/p/6278862.html
Copyright © 2011-2022 走看看