Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 显示错误数据的浏览器_Servlets - Fatal编程技术网

Servlets 显示错误数据的浏览器

Servlets 显示错误数据的浏览器,servlets,Servlets,我有以下代码从文本文件读取数据并打印到浏览器。 但当它得到像abc-abc这样的数据时,它会在浏览器中显示像abc这样的垃圾字符¬タモ... 有什么问题吗? fis指向文本文件。从文本文件读取数据并写入浏览器。 thnx是先进的 f = new File(URLDecoder.decode(filePathStr), URLDecoder.decode(fileName)); fis = new FileInputStream(f);

我有以下代码从文本文件读取数据并打印到浏览器。 但当它得到像abc-abc这样的数据时,它会在浏览器中显示像abc这样的垃圾字符¬タモ... 有什么问题吗? fis指向文本文件。从文本文件读取数据并写入浏览器。 thnx是先进的

        f = new File(URLDecoder.decode(filePathStr), URLDecoder.decode(fileName));
        fis = new FileInputStream(f);
                    res.setHeader("Pragma", "no-cache");
        res.setHeader("Expires", "-1");
        res.setHeader("Cache-Control", "no-cache");
        req.setCharacterEncoding("UTF-8");
        res.setContentType("text/html;charset=UTF-8");
        out = res.getWriter();

        for (int i = fis.read(); i != -1; i = fis.read()) {
            if (i == '\n')
                out.print("</BR>");
            else
                out.write((byte) i);

        }

您的文件可能不是UTF-8格式。我将读取数组中连接所有字节的所有文件,然后用它创建一个字符串,然后打印它。

尝试手动输出类似的内容

out.print("υτφ-8 chars");
它们打印正确吗?如果没有,请阅读本文,并确保遵循有关如何在网页中显示UTF-8字符的4个步骤

如果打印正确,那么问题在于FileInputStream以及如何读取文件

你可以试试下面的方法

FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis, "UTF8");
新更新


上面的代码应该可以正常工作,我已经对它进行了测试

MaVRoSCy:它的fis和isr可以正常工作,但是它也从abc-abc中删除了连字符。。任何其他解决方案??Mavrossy:f=新的FileURLDecoder.decodefilePathStr,URLDecoder.decodefileName;fis=新文件输入流F;isr=新的InputStreamReaderfis,UTF-8;res.setHeaderFragma,无缓存;res.setHeaderExpires,-1;res.setHeaderCache-Control,无缓存;请求设置字符编码UTF-8;res.setContentTypetext/html;字符集=UTF-8;out=res.getWriter;对于int i=isr.read,k=0;我!=-1.i=isr.read,++k{如果i='\n'out.print;else out.writebyte i;out.flush;}MaVRoSCy::在哪里可以看到答案??在我删除out.writebyte i之前,它对我也不起作用;并将其设置为上面的示例。请确保我们有相同的code@nehal如果答案是你需要的,你可以投票并接受它
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        File f = new File("C:\\TEST.TXT");
        FileInputStream fis = new FileInputStream(f);
        InputStreamReader isr  = new InputStreamReader(fis, "UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "-1");
        response.setHeader("Cache-Control", "no-cache");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        out = response.getWriter();
        for (int i = isr.read(), k = 0; i != -1; i = isr.read(), ++k) {
            if (i == '\n') {
                out.print("</BR>");
            } else {
                out.write(i);
            }
            out.flush();
        }
    } finally {
        out.close();
    }
}