gistfile1.txt 服务器默认才iso-8859-1去对response request对象中的数据进行解码编码1、response outputStreamStringstr = "乱码真的好烦人";response.setHeader("content-type", "text/html;charset=utf-8");response.getOutpu
服务器默认才iso-8859-1去对response request对象中的数据进行解码编码 1、response outputStreamString str = "乱码真的好烦人"; response.setHeader("content-type", "text/html;charset=utf-8"); response.getOutputStream().write(str.getBytes("utf-8")); 字节流写入到response中,还是字节流,服务器不会再编码。控制中文的编码方式,在告诉浏览器以指定编码集解码 2、response writerString str = "张兵兵"; response.setCharacterEncoding("utf-8"); response.setHeader("content-type", "text/html;charset=utf-8"); response.getWriter().write(str); 字符写到response中,服务器读取response中数据,设置它为数据编码的编码方式字节流到了浏览器中,在设置浏览器解码字节流的解码方式 3、request乱码返问的页面说明具体的编码方式,浏览器就用该编码方式解码文件,提交的中文数据也用这个编码方式编码) post请求 request.setCharacterEncoding("utf-8");//只对post请求有效 String name = request.getParameter("name"); //Myeclipse采用的gbkname是gbk编码,如果new String(name.getBytes("utf-8")又会出现乱码,要用gbk解码) get请求(超链接提交)只能手动: String name = request.getParameter("name"); String str = new String(name.getBytes("iso-8859-1"),"utf-8");//str是gbk编码保存的看到的字符串,底层还是01010101 服务器要response中的数据写出去,就必须把数据编码成字节数据,默认是用iso-8859-1 比如要写出 ”中” 这个字, 假设它在iso的编码对应值为95 ,浏览器得到的就是95,浏览器又用自己的编码集解码,这是95就不是”中”这个字,就乱码了