我的这个jsp文件显示中文没问题<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>
<body bgcolor="#f8f8f8" text="#000000">
<%
BufferedReader reader = new BufferedReader(new FileReader("D:/Develope/C++Builder编程.txt"));
String stringLine;
while((stringLine = reader.readLine()) != null ) {
   out.println("<nobr>" + stringLine + "<br>");
}
%>
</body>
</html>

解决方案 »

  1.   

    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.io.*"%>
    <html>
    <head>
    </head>
    <body>
    </body><%
    int b;
    byte buffer[]=new byte[1024];
    try
    {
      FileInputStream readfile=new FileInputStream("c:\\bc.txt");
        try
      {
        int length = -1;
        while((length = is.read(buffer))>-1){
         String ss=new String(b,0,length,"gb2312");
         System.out.println(ss) ;
         out.println(ss);
        }
      }
      catch(UnsupportedEncodingException e)
        {System.out.println("the");}
    }
    catch(IOException e)
        {System.out.println("file read error");}%>
    </html>
      

  2.   

    第二个问题
    分3步
    1. 读出文件长度length
    2. 设置每次输出的长度为1024字节,
    3. 开始循环,直到输出所有的内荣为止
      

  3.   

    十分感激两位高人JetKingLau(时差) 的办法好用,但是两个问题只有一个答案,我更关心的还没有答案,给50分。
    moumouren(某某人) 的解决方案JBuilder 7 Enterprise编译出现一个错误如下。
    exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
    D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:84: Undefined variable or class name: is
                        while((length = is.read(buffer))>-1){
                                        ^
    An error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
    D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:85: Variable b may not have been initialized.
                         String ss=new String(b,0,length,"gb2312");
                                              ^
    An error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
    D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:85: Incompatible type for constructor. Can't convert int to byte[].
                         String ss=new String(b,0,length,"gb2312");
                                              ^
    3 errors at org.apache.jasper.compiler.Compiler.compile(Compiler.java:285)
    at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:552)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:177)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:189)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)
    at java.lang.Thread.run(Thread.java:484)
      

  4.   

    WhoAmYou(四海为家) :能不能说的更具体一些。最好有代码。
    JetKingLau(时差) 的50分我一定给,就等第二个问题的答案了。
      

  5.   

    1。你自己转换成iso8859-1当然不能显示中文了。你的页面应该和你转换的一致,而且要和
    平台字符集一致。
    2。不明白你为什么要用这么复杂的方法把一个txt读到ie里面。不要忘了ie是个容器,txt文件本来就可以显示的。只要设置一下http的meta 就可以了。
      

  6.   

    大文件和小文件是一样处理的,既然是文本文件,同样可以逐行处理,只不过在JSP里要等所有内容读完后才能显示罢了,如果是Servlet,你可以即时看到页面逐行添加。在我的程序里,读语句本身就是一个循环,读一行,在页面写一行,如果遇到文件结束,stringLine就是一个null值,就退出循环。
    while((stringLine = reader.readLine()) != null ) {
       out.println("<nobr>" + stringLine + "<br>");
    }如果要在读完整个文件的内容后,再写到页面,可以用向量Vector:
    Vector vectorString = new Vector();
    String stringLine;
    while((stringLine = bufferedReader.readLine()) != null) {
        vectorString.addElement(stringLine);
    }访问该向量中第index个元素:
    String tmpString = String.valueOf(vectorString.elementAt(index));
      

  7.   

    理论上讲大文件和小文件是一样的,
    但byte buffer[]=new byte[2500000];实在不欣赏
    基本代码 理解就好,要自己调试,我也得有分吧
    File f= new File("abc.txt);
    long fileLength = f.length();
    byte[] b = new byte[1024];
    ...............
    String filesize = Long.toString(fileLength);
    response.setHeader("Content-length",filesize);
    long totalSize = 0;
    while(totalSize<fileLength)
    {
    totalSize +=1024;
    if(totalSize>fileLength)
    {
    // the last past
    byte[] lastPart = new byte[1024-(int)(totalSize-fileLength);
    in.read(leftPart);
    }
    else 
    {
    in.read(b);
    }