使用get方法的时候,request数据是跟在url后面的,所以对中文就是乱码, 你需要对request的数据在进行一次编码 requestData = new String(request.getBytes("iso-8859-1"), "gb2312") ;
在url后面传值的时候,要先对它进行编码,java.net.URLEncoder.encode(str,编码名称),在接收端, new String(request.getParamter("fieldname").getBytes("iso-8859-1"),编码名称); 接收端的编码名称和发送时用的编码名称是一样的,getBytes时必须用iso-8859-1,因为浏览器是用这个编码的。不过你这个是表单的get,我觉得URLEncoder.encode应该放在过滤器里了。楼上的方法,不URLEncoder.encode,在windows上可以的,要换成linux,肯定有乱码,因为在windows可以自动对url里的参数编码,linux好像不行。
你需要对request的数据在进行一次编码 requestData = new String(request.getBytes("iso-8859-1"), "gb2312") ;
new String(request.getParamter("fieldname").getBytes("iso-8859-1"),编码名称);
接收端的编码名称和发送时用的编码名称是一样的,getBytes时必须用iso-8859-1,因为浏览器是用这个编码的。不过你这个是表单的get,我觉得URLEncoder.encode应该放在过滤器里了。楼上的方法,不URLEncoder.encode,在windows上可以的,要换成linux,肯定有乱码,因为在windows可以自动对url里的参数编码,linux好像不行。