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=´GBK´ />
标记,粗体字是我添加的。
可以这样验证你的更改是否成功:
在更改前,在你出现乱码的页面的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=´UTF-8´ /
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 ");