b/s 模式的java web项目中,不管是前端与后端。开发过程中,调试过程中,运行过程都经常遇到乱码问题。再从现象出发,分析一下问题:
1,项目导进来,页面中的注释等非西欧文字都是乱码。先查看workspace编码,现在我的GBK 编码。再查看这个页面的编码。
选中IDE工具中选中页面属性,可以看得到。如下图:。说明现在我的这个文件中代码的编码是以utf-8的方式存在。如果在这里把这个编码改成其它编码方式。那么将出现乱码。这比如,我把这个编程改成ISO-8859-1的方式后,发现,页面中所有非西欧的字符变成乱码。所以发现一个文件中的非西欧文字一开始就是乱码,可以查看她的编码属性。UE等工具就可以查看。再看与你主workspace的编码是不是一致。在ECLIPSE中做这种转换发生乱码的概率会很高。建议在UE等编程器中做。
2,页面发送请求时的传参。前端把查询的参数 传到后端,后端根据参数查询得到数据后,返回参数。具体情况是前端以GET的方式请求传参。GET请求前端在传送非西欧文字时一定要加上 URLEncoder.encode()的方式编码后,再传输。
而服务端则应该以 new String(请求参数.getBytes("ISO-8859-1"),"gbk");的方式进行解码。如果不加 URLEncoder.encode()的方式,不同浏览器有不同的字体编码方式。