file_story.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<% 
    request.setCharacterEncoding("gb2312"); 
%> <HTML>
<BODY bgcolor=cyan><Font size=5>
<% String str=response.encodeURL("continueWrite.jsp");
%>
 <P>选择您想续写小说的名字:<BR>
   <FORM action="<%=str%>" method=post name=form>
     <BR><INPUT type="radio" name="R" value="spring.txt" >美丽的故事
     <BR><INPUT type="radio" name="R" value="summer.txt" >火热的夏天   
     <BR><INPUT type="radio" name="R" value="autumn.txt" >秋天的收获
     <BR><INPUT type="radio" name="R" value="winter.txt" >冬天的大雪 
    <BR>  <INPUT type=submit name ="g" value="提交">  
  </FORM>
 </BODY>
</HTML>continueWrite.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<% 
    request.setCharacterEncoding("iso-8859-1"); 
%> <HTML>
<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
     <title>title </title> 
</head> <BODY bgcolor=cyan>
<P>小说已有内容:
<Font size=5 Color=Navy>
<%String str=response.encodeURL("continue.jsp");
%>
<%--获取客户提交的小说的名字--%>
 <%String name=(String)request.getParameter("R");
              if(name==null)
              {name="";
              }
    byte  c[]=name.getBytes("ISO-8859-1");
    name=new String(c); 
    session.setAttribute("name",name);
    File storyFileDir=new File("d:","story");
    storyFileDir.mkdir();
     File f=new File(storyFileDir,name);  
out.println(name);
    //列出小说的内容:
 FileReader in=new FileReader(f);
        BufferedReader bufferin=new BufferedReader(in);
        String str1=null;  
           while((str1=bufferin.readLine())!=null)
               {
//str1 =   new   String(str1.getBytes("ISO8859-1"),   "GBK");    
byte   d[]=str1.getBytes("ISO8859-1");   
    
str1  =   new   String(d);   out.print("<BR>"+str1); 
               }
 bufferin.close();
         in.close(); %> 
 </Font>
 <P>请输入续写的新内容:
  <Form action="<%=str%>" method=post name=form>
    <TEXTAREA name="messages" ROWs="12" COLS=80 WRAP="physical">
    </TEXTAREA>
    <BR>
    <INPUT type="submit" value="提交信息" name="submit">
  </FORM>continue.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<% 
    request.setCharacterEncoding("gb2312"); 
%> <HTML>
<BODY> <font size=5>
   <%! //声明一个需同步处理的文件:
     File f=null;
     String use="yes";
  %>
<%--获取客户提交的小说的名字--%> 
  <%   String name=(String)session.getAttribute("name");
       byte  c[]=name.getBytes("ISO-8859-1");
       name=new String(c); 
       //获取客户续写的内容:
       String content=(String)request.getParameter("messages");
                   if(content==null)
                     {content=" ";
                     }
   %>
<%File storyFileDir=new File("d:","story");
     storyFileDir.mkdir();
     f=new File(storyFileDir,name);
//把对文件的操作放入一个同步块中,并通知
      //其它用户该文件正在被操作中:
      if(use.startsWith("yes"))
        { synchronized(f)
            {  use="beisusing";
              try{
                  RandomAccessFile file=new RandomAccessFile(f,"rw");
                  file.seek(file.length()); //定位到文件的末尾。
                  file.writeUTF(content);
                  file.close();
                  use="yes";
                  out.print("<BR>"+"内容已经写入");
                 }
              catch(IOException e){}
            }
          }
       //如果该小说正在被续写,就通知客户等待:
      else 
          {out.print("该小说正在被续写,请等待");
          }  
   %>
</BODY>
</HTML>

解决方案 »

  1.   

    String name=(String)request.getParameter("R"); 
    name=new String(name.getBytes("8859_1"),"gb2312")
    或者在前面加一句:
    request.setCharacterEncoding("gb2312");
      

  2.   

    加一句
    response.setCharacterEncoding("gb2312");
    试试
      

  3.   

    当你用ISO8859-1去解码中文字符串的时候就会出现乱码,不论你后面new String的时候用什么编码集去编码。
    所以byte   d[]=str1.getBytes("ISO8859-1")这里就错了,应该是byte   d[]=str1.getBytes("GB2312"); 可以去试下,行的话不要忘了给分
      

  4.   

    我也遇到过类似的问题,楼上的方法都用过,不行,后来我是先把他编码之后再发出去,就行了,你可以试一下.可以用这个方法encodeURI();
      

  5.   

    谢谢ariksy7587195 !
    但是你的方法试过不好使
     
      

  6.   

    谢谢caoyinghui1986 !
    我把3个文件都加了response.setCharacterEncoding("gb2312");还是乱码
      

  7.   

    谢谢dengfeiling ! 
    你的方法也不管用
      

  8.   

    你的页面是gb2312的编码,但是处理请求却是用iso-8859-1,有些还转成gbk,编码太乱了,我建议你把所有的
    request.setCharacterEncoding("xxxx");去掉
    我很少做文件操作,所以就给你说下取数据的时候乱码是怎么做,就按1楼那样,在取数据的时候进行数据格式的转换
     name=new String(name.getBytes("iso-8859-1"),"gb2312");这样就可以把原本从数据库中取出来的乱码信息转换成页面的编码了,还有一个,把所有编码的大小写统一一下,区分大小写的
      

  9.   

    偶用lz的代码跑了下,改了下,乱码可以很快解决的。代码就不贴了,楼主以后最好使用CSDN的高亮功能,一大堆眼花呀。
    简单说几个lz代码的问题,其他前辈可以补充之。1. 用一个Filter来处理乱码问题吧,一个简单的如下。package com.test
    import javax.servlet.*;
    import java.io.*;public class FilterTest implements Filter {
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            ;
        }
        
        @Override
        public void destroy() {
           ;        
        }    @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            request.setCharacterEncoding("UTF-8");
            chain.doFilter(request, response);        
        }
    }然后在web.xml里部署下,步骤google下。
        
        <filter>
         <filter-name>EncodingFixed</filter-name>
         <filter-class>com.test.FilterTest</filter-class>
        </filter>
        <filter-mapping>
         <filter-name>EncodingFixed</filter-name>
         <url-pattern>/*</url-pattern>
        </filter-mapping> 这样可以轻松的解决问题,不用每次都加上诸如:request.setCharacterEncoding("gb2312");
    又是request.setCharacterEncoding("gb2312");
    又是name=new String(name.getBytes("iso-8859-1"),"gb2312"); 
    最后把自己都搞晕了。2. continue.jsp中,写文件的时候用
    FileWriter fos = new FileWriter(f,true); // 可以简单方便的附加到文件最后
    fos.write(content);3. 文件操作要判断文件存不存在,能读写否?等等,这些细节还是需要考虑的,否则可能异常一大堆。呵呵。
    “打架就讲究个稳准狠,整那些花花架子干嘛?” --- by老白
      

  10.   

    谢谢bootupnow !
       可能您的水平太高,我还无法采用您的方法,因为您的Filter我编译不了
      

  11.   

    感谢huangpeihp的教诲!
       你的方法我试过了,还是乱码 
      

  12.   

    修改一下你的读取方法,同时指定你的文件的编码类型就可以了      File f = new File("");
          InputStreamReader isr = new InputStreamReader(new FileInputStream(f), "GBK"); 
          BufferedReader bufferin=new BufferedReader(isr);from: http://www.java2000.net/viewthread.jsp?tid=454
      

  13.   

    感谢java2000_net的帮助!
       您的方法我试过了,还是乱码 
      

  14.   

    楼主仔细看看IO操作吧,理解一下。
    ps:如果是纯文字操作,可以首选考虑Reader,Writer及其子类来操作。
      

  15.   

    问:文本文件读出时汉字显示是乱码,问了多人,用了多种方法,至今没有解决 。
    答:根本原因是:你的程序中I/O的错误用法太多,不是一个方案解决得了的。如:9楼的bootupnow的过滤器几乎是字符编码的主流用法。
    一言难尽,程序毛病太多。现修改如下:(已测试(Tomcat平台),一切正常。)"谢谢bootupnow ! 
       可能您的水平太高,我还无法采用您的方法,因为您的Filter我编译不了",故代码中也没有采用过滤器。
    file_story.jsp
    <%@ page contentType="text/html;charset=GB2312" %> 
    <%@ page import ="java.io.*" %> 
    <%  
        request.setCharacterEncoding("gb2312");  
    %>  <HTML> 
    <BODY bgcolor=cyan> <Font size=5> 
    <% String str=response.encodeURL("continueWrite.jsp"); 
    %> 
      <P>选择您想续写小说的名字: <BR> 
        <FORM action=" <%=str%>" method=post name=form> 
          <BR> <INPUT type="radio" name="R" value="spring.txt" >美丽的故事 
          <BR> <INPUT type="radio" name="R" value="summer.txt" >火热的夏天    
          <BR> <INPUT type="radio" name="R" value="autumn.txt" >秋天的收获 
          <BR> <INPUT type="radio" name="R" value="winter.txt" >冬天的大雪  
         <BR>   <INPUT type=submit name ="g" value="提交">   
       </FORM> 
      </BODY> 
    </HTML> 
    continueWrite.jsp<%@ page contentType="text/html;charset=GB2312" %> 
    <%@ page import ="java.io.*" %> 
    <%  
        request.setCharacterEncoding("gb2312");  
    %>  <HTML> 
    <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
          <title>title </title>  
    </head>  <BODY bgcolor=cyan> 
    <P>小说已有内容: 
    <Font size=5 Color=Navy> 
    <%String str=response.encodeURL("continue.jsp"); 
    %> 
    <%--获取客户提交的小说的名字--%> 
      <%String name=(String)request.getParameter("R"); 
                  if(name==null) 
                  {name=""; 
                  } 
        session.setAttribute("name",name); 
        File storyFileDir=new File("d:","story"); 
        storyFileDir.mkdir(); 
         File f=new File(storyFileDir,name);   
    out.println(name); 
        //列出小说的内容: 
     FileReader in=new FileReader(f); 
            BufferedReader bufferin=new BufferedReader(in); 
            String str1=null;   
               while((str1=bufferin.readLine())!=null) 
                   { out.print(" <BR>"+str1);  
                   } 
     bufferin.close(); 
             in.close();  %>  
      </Font> 
      <P>请输入续写的新内容: 
       <Form action=" <%=str%>" method=post name=form> 
         <TEXTAREA name="messages" ROWs="12" COLS=80 WRAP="physical"> 
         </TEXTAREA> 
         <BR> 
         <INPUT type="submit" value="提交信息" name="submit"> 
       </FORM> 
       </BODY> 
    </HTML>continue.jsp<%@ page contentType="text/html;charset=GB2312" %> 
    <%@ page contentType="text/html;charset=GB2312" %> 
    <%@ page import ="java.io.*" %> 
    <%@ page import ="java.util.*" %> 
    <%  
        request.setCharacterEncoding("gb2312");  
    %>  <HTML> 
    <BODY>  <font size=5> 
        <%! //声明一个需同步处理的文件: 
         File f=null; 
         String use="yes"; 
      %> 
    <%--获取客户提交的小说的名字--%>  
       <%   String name=(String)session.getAttribute("name"); 
           name=name==null?"":name; 
           //获取客户续写的内容: 
           String content=(String)request.getParameter("messages"); 
                       if(content==null) 
                         {content=" "; 
                         } 
       %> 
    <%File storyFileDir=new File("d:","story"); 
         storyFileDir.mkdir(); 
         f=new File(storyFileDir,name); 
    //把对文件的操作放入一个同步块中,并通知 
          //其它用户该文件正在被操作中: 
          if(use.startsWith("yes")) 
            { synchronized(f) 
                {  use="beisusing"; 
                  try{ 
                      //RandomAccessFile file=new RandomAccessFile(f,"rw"); 
                      //file.seek(file.length()); //定位到文件的末尾。 
                      //file.writeUTF(content); 
                      //file.close(); 
                      FileWriter fw = new FileWriter(f,true);//添加方式
                      fw.write(content);
                      fw.flush();
                      fw.close();
                      use="yes"; 
                      out.print(" <BR>"+"内容已经写入"); 
                     } 
                  catch(IOException e){} 
                } 
              } 
           //如果该小说正在被续写,就通知客户等待: 
          else  
              {out.print("该小说正在被续写,请等待"); 
              }   
       %> 
    </BODY> 
    </HTML> 
      

  16.   

    请问jiangnaisong 老师:
       您的代码在我的环境下运行了,正常情况下文本文件内容还是乱码,如:
    小说已有内容: spring.txt 
    锘垮ぇ瀹跺ソ 请输入续写的新内容: 

        如果把continueWrite.jsp 页面的IE编码改为Unicode则文本文件内容显示正常,其它汉字显示乱码,如:
    С˵ґӐĚȝ?? spring.txt 
    大家好 ǫʤȫид?Єڈݣ? 
     
    我的JDK是1.4,TOMCAT是5.0,难道是环境不对?      
     
      

  17.   

    我的环境是:jdk1.5,Tomcat5.5 ,一切正常啊。为何你那儿不正常,思考中......
      

  18.   

    偶的也没问题,关注。
    lz可以新建一个文件(如:spring.txt)来试试,把原来生成的旧文件删除之。
      

  19.   

    其实就是这儿的问题:
              while((str1=bufferin.readLine())!=null) 
                   { out.print(" <BR>"+str1);  
      

  20.   

    多谢20楼朋友的鼓励,可能是问题比较普遍、棘手的原因吧!file流的确很少有人研究,可是我是教师,得解决问题,郁闷呀
      

  21.   

    我给的代码,你最好单独使用,不要和你的那些代码混在在一起使用。这代码我用了很久了,没有问题。如果你用单独的程序成功了,再逐步移植到你原来的代码里面。请参考<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page import="java.io.*"%>
    <pre>
    <%
      File f = new File("d:/test.txt");
      InputStreamReader isr = new InputStreamReader(new FileInputStream(f), "GBK");
      BufferedReader bufferin = new BufferedReader(isr);
      String line = null;
      while ((line = bufferin.readLine()) != null) {
        out.println(line);
      }
      bufferin.close();
    %>
    </pre>
      

  22.   

    感谢java2000_net !
      我现在就两个文件:file_story和您上面的代码文件xs.jsp,第一次运行是乱码,以后就是以下信息了:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception sun.io.MalformedInputException
    sun.io.ByteToCharDoubleByte.flush(ByteToCharDoubleByte.java:57)
    sun.nio.cs.StreamDecoder$ConverterSD.flushInto(StreamDecoder.java:266)
    sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:290)
    sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
    java.io.InputStreamReader.read(InputStreamReader.java:167)
    java.io.BufferedReader.fill(BufferedReader.java:136)
    java.io.BufferedReader.readLine(BufferedReader.java:299)
    java.io.BufferedReader.readLine(BufferedReader.java:362)
    org.apache.jsp.story.xs_jsp._jspService(xs_jsp.java:48)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
    --------------------------------------------------------------------------------

        看来这个问题还真棘手,要不我讲课时把这个问题略过去得了
      

  23.   

    我的环境别的JSP文件运行正常
      

  24.   

    你的问题搞定:
    continueWrite.jsp: 
    下面三处改称这样: 
    ...
     request.setCharacterEncoding("gb2312");  
    ...
    byte  c[]=name.getBytes("gb2312"); 
    ...
    byte   d[]=str1.getBytes("gb2312");continue.jsp:
    下面两处这样改:
           byte  c[]=name.getBytes("gb2312");
       file.write(content.getBytes("gb2312"));     //这句最关键!!!
    我测试过了,结果正确
        
      

  25.   

    MalformedInputException 你的文件不是 GBK的,你修改成其它的看看吧!比如UTF-8
      

  26.   

    这个帖子拖的太长了,其实本来没多大的问题,呵呵。前边很多位的回答都能解决问题,楼主认真试验下应该早搞定了才对呀。今天反正闲着也是闲着,干脆简单的重写了,从简单着手就行。1 文件:file_story.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>page1</title>
    </head>
    <body>
    <h1>选择您想续写小说的名字: </h1><br>
    <form action="continueWrite.jsp" method="post">
    <input type="radio" name="filename" value="spring.txt" checked>美丽的故事<br>
    <input type="radio" name="filename" value="summer.txt">火热的夏天<br>
    <input type="radio" name="filename" value="autumn.txt">秋天的收获<br>
    <input type="radio" name="filename" value="winter.txt">冬天的大雪<br>
    路径:<input type="text" name="filepath" value="D:/story/"><br>
    <input type="submit" name="submit" value="提交">
    </form>
    </body>
    </html>2 文件:continueWrite.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.io.*"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>page2</title>
    </head>
    <body>
    <%
    request.setCharacterEncoding("UTF-8");
    %>
    <%
    String filePath = request.getParameter("filepath");
    String fileName = request.getParameter("filename");
    filePath = filePath.endsWith("/")?filePath:filePath + "/";
    File file = new File(filePath + fileName);
    session.setAttribute("file",file.getAbsoluteFile());
    if(file.exists()){ // 如果文件存在,就读取之
    out.println(file);
    try{
    BufferedReader br = new BufferedReader(new FileReader(file));
    String s = "",tmp = "";
    while((tmp = br.readLine()) != null){
    System.out.println(tmp);
    s += tmp + "<br>";
    }
    br.close();
    %>
    内容:
    <br>
    <div style="border:1px solid #0000FF"><%= s %></div>
    <%
    } catch (IOException e) {
    e.printStackTrace();
    return;
    }
    } else {
    try {
    if(new File(filePath).mkdirs()){
    file.createNewFile(); // 建立一个新文件
    }
    } catch (IOException e) {
    %>
    <h1>IO出现了异常!<%=e.getMessage()%></h1>
    <%
    return;
    }
    }
    %>
    <form action="continue.jsp" method="post">
    续写新内容:<br>
    <textarea rows="10" cols="50" name="editarea"></textarea>
    <input type="submit" name="submit" value="提交"></form>
    </body>
    </html>
    3 文件:continue.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.io.*" %>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>page3</title>
    </head>
    <body>
    <%
    request.setCharacterEncoding("UTF-8");
    %>
    <%
    String content = request.getParameter("editarea");
    synchronized(this){
    try{
    String fileName = session.getAttribute("file").toString();
    session.removeAttribute("file");
    System.out.println(fileName);
    File file = new File(fileName);
    if(!file.exists())
    throw new IOException("文件不存在");
    BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));
    bw.write(content);
    bw.flush();
    bw.close();
    %>
    <h1>续写完毕</h1>
    <%
    }catch(IOException e){
    e.printStackTrace();
    %>
    <h1>IO出现了异常!<%=e.getMessage()%></h1>
    <%
    }
    }
    %>
    </body>
    </html>
      

  27.   

    相当感谢kkk2007!
       我按你说的修改后还是乱码:
    小说已有内容: spring.txt 
    锘看蠹液? 
    请输入续写的新内容: 

        我的jdk是1.4,tomcat是5.0,是否环境有问题?
      

  28.   

       能得到大家这么关注,我都流汗了,再一次衷心地感谢大家!
      我是一位大学老师,才学java,有这么多师傅,我以后上讲台底气足多了!
      我就纳了闷了:bootupnow 先生费了那么多精力,在我的机器上显示的竟是这样:
    ѡ��������дС˵�����֣� 
    �������
    ���ȵ�����
    ������ջ�
    ����Ĵ�ѩ
    ·����
     

       天理何在?!
    我决定重新配置环境了,请问jdk和tomcat如何搭配最为合理?特别是楼上的这些朋友,你们调试正常的环境是什么,可否指点一下,本人在此鞠躬了
      

  29.   

    偶的环境 jdk1.6.04 + tomcat 6.0.14 
    建议用jdk 1.5以上 配合 tomcat 5.5以上
    ps:偶也是初学,共同进步之,呵呵
      

  30.   

    我都试过n遍了,中英 、符号混合输入都没错。
    spring.txt如果有以前的乱码,输出还是乱码。
    你的spring.txt有以前的乱码字符,先把spring.txt原有的字符清空了。
    file_story.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import ="java.io.*" %>
    <% 
        request.setCharacterEncoding("gb2312"); 
    %> <HTML>
    <BODY bgcolor=cyan> <Font size=5>
    <% String str=response.encodeURL("continueWrite.jsp");
    %>
      <P>选择您想续写小说的名字: <BR>
        <FORM action=" <%=str%>" method=post name=form>
          <BR> <INPUT type="radio" name="R" value="spring.txt" >美丽的故事
          <BR> <INPUT type="radio" name="R" value="summer.txt" >火热的夏天   
          <BR> <INPUT type="radio" name="R" value="autumn.txt" >秋天的收获
          <BR> <INPUT type="radio" name="R" value="winter.txt" >冬天的大雪 
         <BR>   <INPUT type=submit name ="g" value="提交">  
       </FORM>
      </BODY>
    </HTML>continueWrite.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import ="java.io.*" %>
    <% 
        request.setCharacterEncoding("gb2312"); 
    %> <HTML>
    <head> 
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
          <title>title  </title> 
    </head> <BODY bgcolor=cyan>
    <P>小说已有内容:
    <Font size=5 Color=Navy>
    <%String str=response.encodeURL("continue.jsp");
    %>
    <%--获取客户提交的小说的名字--%>
      <%String name=(String)request.getParameter("R");
                  if(name==null)
                  {name="";
                  }
        byte  c[]=name.getBytes("gb2312");
        name=new String(c); 
        session.setAttribute("name",name);
        File storyFileDir=new File("d:","story");
        storyFileDir.mkdir();
         File f=new File(storyFileDir,name);  
    out.println(name);
        //列出小说的内容:
     FileReader in=new FileReader(f);
            BufferedReader bufferin=new BufferedReader(in);
            String str1=null;  
               while((str1=bufferin.readLine())!=null)
                   {
    //str1 =   new   String(str1.getBytes("ISO8859-1"),   "GBK");    
    byte   d[]=str1.getBytes("gb2312");   
        
    str1  =   new   String(d);   out.print(" <BR>"+str1); 
                   }
     bufferin.close();
             in.close(); %> 
      </Font>
      <P>请输入续写的新内容:
       <Form action=" <%=str%>" method=post name=form>
         <TEXTAREA name="messages" ROWs="12" COLS=80 WRAP="physical">
         </TEXTAREA>
         <BR>
         <INPUT type="submit" value="提交信息" name="submit">
       </FORM>continue.jsp:
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import ="java.io.*" %>
    <%@ page import ="java.util.*" %>
    <% 
        request.setCharacterEncoding("gb2312"); 
    %> <HTML>
    <BODY>  <font size=5>
        <%! //声明一个需同步处理的文件:
         File f=null;
         String use="yes";
      %>
    <%--获取客户提交的小说的名字--%> 
       <%   String name=(String)session.getAttribute("name");
           byte  c[]=name.getBytes("gb2312");
           name=new String(c); 
           //获取客户续写的内容:
           String content=(String)request.getParameter("messages");
                       if(content==null)
                         {content=" ";
                         }
    //byte[] content=co.getBytes("gb2312");
       %>
    <%File storyFileDir=new File("d:","story");
         storyFileDir.mkdir();
         f=new File(storyFileDir,name);
    //把对文件的操作放入一个同步块中,并通知
          //其它用户该文件正在被操作中:
          if(use.startsWith("yes"))
            { synchronized(f)
                {  use="beisusing";
                  try{
                      RandomAccessFile file=new RandomAccessFile(f,"rw");
                      file.seek(file.length()); //定位到文件的末尾。
                      file.write(content.getBytes("gb2312"));
                      file.close();
                      use="yes";
                      out.print(" <BR>"+"内容已经写入");
                     }
                  catch(IOException e){}
                }
              }
           //如果该小说正在被续写,就通知客户等待:
          else 
              {out.print("该小说正在被续写,请等待");
              }  
       %>
    </BODY>
    </HTML> 
      

  31.   

    小说已有内容:  spring.txt
    zhong过好’;./'ziji人民多大;;;深入请输入续写的新内容:
      

  32.   

    非常感谢kkk2007!
       我重建文本文件后好用了!
       今天是什么日子啊!天这么蓝.因为下午我的课没问题了!!!
       另外还要感谢bootupnow、jiangnaisong 、hmsuccess 、 java2000_net 、huangpeihp、wenzejiang、dengfeiling 、caoyinghui1986、ariksy7587195、 wenzejiang ,希望能和你们成为好朋友!