1.浏览器访请求服务器主要有2中方式,post和get
get方式:从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面。
post:已提交表单的形式。APP主要是post请求。
2.访问过程与访问:
get:
浏览器中输入地址 –> 浏览器对中文进行编码 –>发送到服务器 ->服务器进行解码
如果浏览器编码和服务器解码用的字符集不一致就会发生乱码问题。
单纯设置request.setCharacterEncoding("UTF-8");是没有用的,所以我们把默认的iso-8859-1编码改成UTF-8,在TOMCAT的配置文件的server.xml中添加URIEncoding=UTF-8
post:表单提交,在Servlet或者Filter中设置request.setCharacterEncoding("UTF-8");就能很好的统一格式.
3.有时候输入文字之后,通过服务器取出来,会存在“??”的文字
对于gbk这种编码而言,中文所对应的字节数是2byte;而在utf-8中,中文则是对应三个字节。于是在输入奇数个汉字时,最后一个字节在gbk中则无法编译。譬如说utf-8编码的3个字,编码是123|456|789 ,在传输到服务器中时,系统认为这9个字节是gbk编码,于是就变成了12|34|56|78|9。后面多出的一个字节不能够编译成汉字,此时常用“?”来代替。于是最后一个byte变成了“?”(ASCII码为63)。这时再将它转成utf-8时,则变成了123|456|78?。这个时候第三个字也不能正确地读取了,于是出现了(两个问号)。
正确的方式应该是
String msg_client = new String(bb, "utf-8"); 去构建
而不是通过bufferedreader一行一行的读取
String msg_client = new String(msg_client1.getBytes("gbk"), "utf-8");