日期:2014-05-17  浏览次数:20586 次

Servlet乱码如何解决?

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptionIOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();
String FilePath = this.getServletContext().getRealPath("/Template/notice.html");
String Content = new String(FileCls.readFile(FilePath,"UTF-8").getBytes("ISO8859-1"),"UTF-8");

out.print(Content);

}



读文件的类:


public class FileCls {

public static String readFile(String filename,String Encoder){
        String read;
        String readStr = "";;
        try {
BufferedReader bufread=new BufferedReader(new InputStreamReader(new FileInputStream(filename),Encoder));
    while ((read = bufread.readLine()) != null) {
        readStr = readStr + read+ "\r\n";
    }
} catch (IOException e) {
    e.printStackTrace();
}
        return readStr;
    }

}


模板文件都是用的UTF-8,META信息也设置为UTF-8了,是哪里写得有问题?

------解决方案--------------------
你用myeclipse了吧,编码应该是GBK的,所以你这个属于请求时乱码了,后面就越改越乱了,内容设置那个改一下,改成: String Content = new String(FileCls.readFile(FilePath,"GBK")); 应该就可以了,没必要在后面再进行转码了

------解决方案--------------------
java常见乱码总结推荐:






http://blog.csdn.net/zhangao0086/article/details/6240379
------解决方案--------------------
这个应该是多次转码的问题
------解决方案--------------------
修改server.xml  加上 URIEcoding = "UTF-8" 试试
------解决方案--------------------
乱码的问题的一直都是一个很头疼的问题 多遇到几次 搞习惯了 就好了
------解决方案--------------------
引用:
Java code
?



12345678910111213

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         response.setCharacterEncoding("ut……

首先打印:System.out.println("编码格式为:"+java.nio.charset.Charset.defaultCharset()); 看看你到底是什么编码格式 如果不是UTF-8 如下设置一下
你打开我的电脑-高级-环境变量-系统变量 设置一下 
变量名:JAVA_TOOL_OPTIONS 
变量值:-Dfile.encoding=UTF-8 
变量值可根据你的编码改变你计算机的根本编码格式
设置后需要重启电脑才能生效