JavaWeb开发中的乱码问题

本文详细介绍了如何处理不同场景下的字符编码问题,包括获取系统默认编码、服务器端指定字符编码发送数据、解决文件名乱码及表单提交数据乱码等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

转载于:https://www.cnblogs.com/quxiangxiangtiange/p/6278862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值