OutputStreamWriter 是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节。
可我编写的以下代码为什么输出的是字符,而不是字节呢?
import java.io.*;
    public class Read {
    public static void main(String[] args) throws IOException {
    String str= "";
    BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 
    BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out)); 
    stdout.write("请输入:");
    stdout.flush();
    str = stdin.readLine();
    stdout.write("这是从用户输入的串:"+str);
    stdout.write(str);
    stdout.flush();
    }
}
运行结果:
请输入:中国
这是从用户输入的串:中国
为什么输出的不是字节???

解决方案 »

  1.   

    1、"是字符流通向字节流的桥梁"这句话就不对,应该是:"是字节流通向字符流的桥梁"
    2、BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out),"UTF-8");  
    这样试试。
      

  2.   

    OutputStreamWriter:你要理解为:OutputStream--->Writer
    同理
    InputStreamReader 是InputSteam转为Reader的意思.
      

  3.   

    import java.io.*; 
        public class Read { 
        public static void main(String[] args) throws IOException { 
        String str= ""; 
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 
        BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out)); 
        stdout.write("请输入:"); 
        stdout.flush(); 
        str = stdin.readLine(); 
        stdout.write("这是从用户输入的串:"+str.getBytes("UTF-8")); 
        stdout.flush(); 
        } 
      

  4.   

    OutputStreamWriter 是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节。 
    这句话我是直接从JDK api文档里直接复制过来的,不信,你可以亲自去查看JDK文档。如果说"是字节流通向字符流的桥梁"
    那我就没必要来这儿发问了。
      

  5.   

    "InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。"
    这句话也是JDK文档里的原话,这个我倒是明白。
    不过还是谢谢bigbug9002的回复
      

  6.   

    对了,2、BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out),"UTF-8");
    你这么做那不等于强制转换为了"UTF-8"编码,然后才输出吗?