呵呵,你的代码搞的还挺复杂
<%@ page language="java" pageEncoding="utf-8" 
contentType="text/html;charset=GBK"%> 
这里两个不能设置为一样吗?
当然这个只是页面显示的问题,程序中要用到的,你程序可以统一设置一个filter,这个filter相信在网上会有很多,如果用spring的话,其中也提供现成的;主要是将request中的转过来,在request传输过程中一般是ISO8859-1再说到你的运行环境里来,你说的乱码是哪里看起来的乱码,是程序中print还是保存到数据库呢?
程序中一般是JVM默认的字符集,在windows中默认是GBK,linux下是UTF-8当然print的东西不一定就算数,只要在你程序需要显示的地方不乱就可以了:)