Servlet 程序乱码问题【重要】

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

直接出例子:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值