web项目中的常见乱码问题

许多人在写web工程获取前端传来的中文数据,常常是一段乱码。这里跟大家解释一下。
假设你用的是jsp页面写前端。jsp的第一行就有声明

<%@page pageEncoding="UTF-8"%>

那么我们传递的中文数据会使用UTF-8 编码,而浏览器默认采用的是 ISO8859-1给你解码,那么先用 UTF-8 编码,再用ISO8859-1解码,你后端接收到的数据自然是一段乱码。

碰到乱码问题先不要着急,你要想一下问题出在哪里,好多新手以为看到了UTF-8就觉得中文数据一定不会乱码了,那肯定是不对的。
在这里插入图片描述
当然我们也有解决方法
我们后端拿到的是数据 msg 的编码过程是
原数据 ⇒ UTF-8(编码) ⇒ ISO8859-1(解码) ⇒ 乱码
那么我们再按照相反的编码顺序就可以拿到原数据了
乱码 ⇒ ISO8859-1(解码) ⇒ UTF-8(编码) ⇒ 原数据

// 先将乱码通过 ISO8859-1 方式解码成 字节数组
byte[] by = msg.getBytes("ISO8859-1");

// 再将字节数组通过 UTF-8 方式编码成 原数据
// 现在的字符串msg就是原来的数据了
msg = new String(by, "UTF-8");

这里只是非常浅显的讲了一下乱码的问题,要想真正的了解数据的编码与解码规则,还要自己多去学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值