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