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();
}
}
运行结果:
请输入:中国
这是从用户输入的串:中国
为什么输出的不是字节???
可我编写的以下代码为什么输出的是字符,而不是字节呢?
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();
}
}
运行结果:
请输入:中国
这是从用户输入的串:中国
为什么输出的不是字节???
2、BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out),"UTF-8");
这样试试。
同理
InputStreamReader 是InputSteam转为Reader的意思.
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();
}
}
这句话我是直接从JDK api文档里直接复制过来的,不信,你可以亲自去查看JDK文档。如果说"是字节流通向字符流的桥梁"
那我就没必要来这儿发问了。
这句话也是JDK文档里的原话,这个我倒是明白。
不过还是谢谢bigbug9002的回复
你这么做那不等于强制转换为了"UTF-8"编码,然后才输出吗?