相关搜索与编码的认识

由于之前做网站页面表单都是采用默认的编码提交,后台一般采用request.setCharacterEncoding("gbk");这样一般不会有编码问题.但是现在做搜索,要拿网友的输入做相关搜索,但是在后台发现,很多时候还是会出现乱码,对做相关搜索效率甚差,只能对做些处理才尽量避免输入奇怪的字符.上网查了相关资料之后,"断定":由于操作系统,浏览器等(编码)原因,这个不可能解决的问题了.搁置了一段时间,今天又拿这个问题来研究:

request.setCharacterEncoding("gbk");对于我再次认识了这句话的意思.
request.setCharacterEncoding("gbk");request代表的客户端,这句当然代表的是客户端提交的编码是gbk,即浏览器提交的编码方式是gbk.<%@ page contentType="text/html; charset=gbk"%>这个charset=gbk才代表我们拿出来的参数要最终转为gbk.
jsp是request.setCharacterEncoding("uft-8");
String q = request.getParameter("q");
google会用encodeURIComponent进行编码后提交,baidu似乎是会"得知"浏览的提交编码方式ie=gb2312(具体没研究过).之前还认为google后台有个专门的处理编码的功能,不知有否?
所以如果你的浏览器是用uft-8提交的话,request.setCharacterEncoding("gbk");还是会出现乱码.
而标准的应该是utf-8才不会出现乱码.而中文的ie,firefox提交的编码默认是gbk(或者gb2312).
所以我们jsp用request.setCharacterEncoding("gbk"),html用默认的方式提交一般不会有编码问题.乱码的出现会是少数,但是这小部分会影响我们某些应用.

以上是我的理解,不正确的地方请赐教指正!
有什么好的解决办法分享下,谢谢!

你可能感兴趣的:(jsp,浏览器,IE,Google,firefox)