现在的位置: 首页 > 综合 > 正文

Servlet 程序乱码问题【重要】

2013年05月15日 ⁄ 综合 ⁄ 共 1807字 ⁄ 字号 评论关闭

最近编写程序出现了最头疼的乱码问题,经过研究后得到了一些关于如何处理乱码问题的方法,和大家分享下!

直接出例子:

package ch10;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestDemo extends HttpServlet{
 private static final long serialVersionUID = 1L;

 public void doGet(HttpServletRequest req,HttpServletResponse res)throws IOException, ServletException
    {
     PrintWriter out=res.getWriter();
     res.setContentType("text/html; charset=UTF-8");
     req.setCharacterEncoding("UTF-8");
     String path=(String)req.getContextPath();
        String protocol=req.getProtocol();
        String method=req.getMethod();
        out.println("<html>");
        out.println("<body>");
        out.println("获得Context的路径:"+path+"<br>");
        out.println("方法:"+method+"<br>");
        out.println("协议:"+protocol+"<br>");
        System.out.println("获得Context的路径:"+path+"<br>");
        System.out.println("方法:"+method+"<br>");
        System.out.println("协议:"+protocol+"<br>");
        out.println("</body>");
        out.println("</html>");     
    }
}


这个程序运行是会出乱码的,乱码如下:

??Context????/10.7.2
???GET
???HTTP/1.1


下面谈下是如何解决乱码问题的,提供下思路!

 PrintWriter out=res.getWriter();
     res.setContentType("text/html; charset=UTF-8");
     req.setCharacterEncoding("UTF-8");

这里这样写的话理解就是先输出了,然后将页面编码设置成了 UTF-8,但是设置后页面实际已经是已经输出了!

所以此段编码改成


     res.setContentType("text/html; charset=UTF-8");
     req.setCharacterEncoding("UTF-8");
 PrintWriter out=res.getWriter();



理论可以解决 上面的乱码问题!

其他方法:

可以通过Tomcat 下conf 下的 Server.xml 来进行设置(不提倡,实际的软件开发过程中是不允许的!)

再在你的安装目录下E:\Program Files\Apache Software Foundation\Tomcat 7.0\conf的目录下有个server.xml,用记事本打开,在端口为 

8080<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/> 

 关键是在最后加上 

URIEncoding="utf-8"

还有一个方法不知道能否实现这里我只提供下 一个思路:

就是通过输入输出流,将内容写入字节流,然后在转换出来!感兴趣的大家可以试一试!


注:自己的功夫不是很高在交流过程中难免出现错误,如有错误请大家指出,同时深感歉意!批评邮箱:cnbailu@163.com


【上篇】
【下篇】

抱歉!评论已关闭.