web项目中的中文乱码问题



一、请求时的中文乱码问题


1、get方式:Tomcat 8+已经将get请求下的乱码问题解决了,但之前的版本也会出现乱码问题

分析: 当客户端发送get请求到服务器的时候,因为参数在url中,没有方法可以设置其编码,而在HTTP传输时将url进行ISO-8859-1编码,服务器收到数据后会以ISO-8859-1编码进行解码。又因为ISO-8859-1编码不支持中文,于是参数中带有中文的时候出现乱码问题。

解决方法:改变数据编码形式

/*  获取数据  */

username = request.getParameter("username");

/*  方法一  */

// 先对数据进行ISO-8859-1编码
username = URLEncoder.encode(username, :ISO-8859-1");
//再对数据进行UTF-8解码
username = URLDecoder.decode(username, "UTF-8");

/*  方法二  */

username = new String(username.getBytes("iso-8859-1"), "utf-8");


2、post方式:进行post请求显示乱码

当客户端发送post请求到服务器的时候,因为参数在请求体中,所以可以设置其编码,指定编码将乱码正确显示

解决方法:

/*  获取数据  */

username = request.getParameter("username");

/*  设置指定编码  */

request.setCharacterEncoding("utf-8");




二、响应时的中文乱码问题


因为通过请求后的数据编码格式为utf-8,如果没有对响应的编码格式进行对应操作,浏览器可能会进行错误的编码解码,所以出现乱码问题。

解决方法: 设置响应时浏览器的编码格式


response.setContentType("text/html;charset=utf-8");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值