日期:2014-05-18  浏览次数:20564 次

Servlet + Jboss(Tomcat) 中文乱码为什么会这样?求救
看了很多关于Servlet   +   Tomcat   中文乱码的原理和解决方法
---------------------
更改   C:\JavaSoft\Tomcat5.5\conf\server.xml,指定浏览器的编码格式为“简体中文”:  
方法是找到   server.xml   中的  
<Connector   port= "9111 "   maxThreads= "150 "   minSpareThreads= "25 "   maxSpareThreads= "75 "  
enableLookups= "false "   redirectPort= "8443 "   acceptCount= "100 "  
connectionTimeout= "20000 "   disableUploadTimeout= "true "   URIEncoding=&acute;GBK&acute;   />  
标记,粗体字是我添加的。  
可以这样验证你的更改是否成功:  
在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。  
b)更该   Java   程序,我的程序是这样的:  
public   class   ThreeParams   extends   HttpServlet   {  
public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)  
throws   ServletException,   IOException   {  
response.setContentType( "text/html;   charset=GBK ");  
...  
}  
}  
------------------------------------------------------
我的全部是配置:   URIEncoding=&acute;UTF-8&acute;   /
response.setContentType( "text/html;   charset=UTF-8 ");  

然而在Servlet中接收到的中文参数值却全部是乱码
后来我用表达式:new   String((request.getParameter( "trueName ")).getBytes( "GBK "),   "utf-8 ");却又正确了。怎么会会是GBK呢?

最后我把断点设在Servlet最前面,对HttpServletRequest   request进行debug发现request.getCharacterEncoding()=null
这样会这样啊?

求救各位大侠.....


------解决方案--------------------
读request前
request.setCharacterEncoding( "utf-8 ")
就可以了,

不用new String((request.getParameter( "trueName ")).getBytes( "GBK "), "utf-8 ");