javaweb 乱码(浏览器显示乱码、请求参数乱码)常见的几种方式

1.编译器中默认设置的编码方式是ios-8859-1

        ios-8859-1不兼容中文编码,查不到的字符就会显示成63,而浏览器默认的解码表是GB2312,会将63去转化成?,这也是最常见的乱码

        解决方法:

        我们只要在进行编码字符之前加上 response.setCharacterEncoding("utf-8");即可将编码方式转化为utf-8。

        但此时如果直接编码还是会报乱码问题,原因是之前说过浏览器的默认解码方式为GB2312,所以只要我们去将浏览器的解码方式改为GB2312即可。

        但是每次去改动浏览器太过麻烦。

        为此在HttpServletResponse中提供了两种解决乱码方案:

1.

//设置HttpServletResponse使用utf-8

response.setCharacterEncoding("utf-8");

//通知浏览器使用utf-8解码

response.serHeader("Content-Type","text/html;charset=utf-8");

2.

//包含上面两种方式
response.setContentType("text/html;charset=utf-8");

2.请求参数乱码解决问题

        在表单将数据提交给Servlet方法去处理数据时可能会出现乱码问题,原因是虽然编码方式采用了utf-8,但是解码的默认方式依旧是ios-8859-1。

        如果你的表单的提交方式是post,那你只需要在字符解码前加

        rrequest.setCharacterEncoding("utf-8");//只对post有效

        如果你的提交方式是get,那么会麻烦一点,比如如果你需要解码的对象是name,那么需要在输出之前加上 name=new String (name.getBytes("ios8859-1),"utf-8"),每一次变量都需要加。

解决get的乱码还有一种方法就是将tomcat换成8及以上的版本,那么解决方法就和post相同,否则每个变量都需要自己写解码方式。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值