源程序是这样的
        String s1,s2 = "";
        BufferedReader in = new BufferedReader(new FileReader("db.htm"));
        while((s1 = in.readLine()) != null) {
            s2 += s1 + "\n";
        }
        in.close();
        s2 = s2.replaceAll("###title###", "JSP中文生成htm");
        s2 = s2.replaceAll("###content###", "这是要生成的内容");
        s2 = s2.replaceAll("###author###", "生成显示成功");
        System.out.println(s2);
        BufferedReader in2 = new BufferedReader(new StringReader(s2));
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("index.htm")));
        while((s1 = in2.readLine()) != null) {
            out.println(s1);
        }
        out.close();
        in2.close();结果在本地计算机上显示正常,而在服务器上中文都变成了????,请问这是为什么啊,要转换字符吗

解决方案 »

  1.   

    写个方法转换字符:
    public static String getStr(String str) {
    try {
    String temp_p = str;
    byte[] temp_t = temp_p.getBytes("ISO8859-1");
    String temp = new String(temp_t);
    return temp;
    } catch (Exception e) {
    //
    }
    return "null";
    }
      

  2.   

    response.setContentType("text/html; charset=gb2312")
    可以设置响应页面的字符集,
      

  3.   

    假设db.htm文件的编码为CODE,
    先读取到字节数组,然后String str = new String(bytes, CODE);
      

  4.   

    服务器是什么系统的? 在写文件的时候也指定一下编码才行。
    对文件:FileReader,FileWrieter         其字节型节点流类型为:FileInputStream,FileOutputStream    对内存(数组):CharArrayReader,CharArrayWriter        其字节型节点流类型为:ByteArrayInputStream,ByteArrayOutputStream    对内存(字符串):StringReader,StringWriter    对管道:PipedReader,PipedWriter        其字节型节点流类型为:PipedInputStream,PipedOutputStream    同时,应该用以下面向字符型处理流来处理输入和输出:    BufferedWriter,BufferedReader        其字节型的处理流为:BufferedInputeStream,BufferedOutputStream    InputStreamReader,OutputStreamWriter    其字节型的处理流为:DataInputStream,DataOutputStream    其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流,如:    InputStreamReader in = new InputStreamReader(System.in,"GB2312");    OutputStreamWriter out = new OutputStreamWriter (System.out,"GB2312");