天天看点

关于在web页面乱码

在客户浏览器端,页面显示乱码

页面显示乱码,一般有:部分数据显示乱码,和整个页面乱码

整页面乱码

一般是页面设置编码(包括jsp 开头的 pageEncoding=”UTF-8” 和页面属性设置的编码)

还有可能是用户浏览器手动设置的编码。

部分数据乱码

要看看是哪里正常,哪里乱码,

例如:页面乱码,动态生成数据正常,或者动态生成数据乱码,页面正常

在java web开发中,为防止乱码。最好全部统一。

例如utf-8

  • 将 jsp/html 等文件编码设置成“utf-8”
  • jsp开头 pageEncoding="UTF-8",html 的head <meta charset="utf-8"/>
  • 也可以在 servlet/controller中设置request.setCharacterEncoding(“utf-8”); //获取数据的编码 response.setContentType(“text/html;charset=utf-8”); //发送数据的编码
  • 如果后台获取数据依然乱码,那就用 String p = new String(str.getBytes(“iso-8859-1”),”utf-8”); //第一个编码,要考虑传来的数据编码,后者要转换成需要的编码。

乱码,还是要以预防为主。

关于乱码,在《深入分析Java Web技术内幕》(阿里巴巴)中也有较详细的探讨:

中文乱码,主要是由于 char-byte之间转换(编码解码)方式不一致导致的。

1.中文变成不认识的字符(博主注:而且往往是一个中文变两个字符,可能是汉字在解码时用iso-8859-1之类,导致的)

2.一个汉字变成一个问号:是通过 ISO-8859-1 编码,再通过ISO-8859-1解码得到的 。(博主注:读者可测试 new String(str.getBytes(“iso-8859-1”),”iso-8859-1”); )

3.一个汉字变成两个问号:多次编码

4.一种不正常的正确解码:中文传输时,被iso-8859-1拆开,最后又通过iso-8859-1再合上,导致得到正确的汉字,由于额外编解码,所以不建议

继续阅读