最近编写程序出现了最头疼的乱码问题,经过研究后得到了一些关于如何处理乱码问题的方法,和大家分享下!
直接出例子:
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