2 feijikaikai001 feijikaikai001 于 2016.09.12 06:09 提问

求问对于转换流的底层实现
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"utf-8"));
    char []c=new char[4];
    int x=br.read(c);

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out,"gbk"));
    bw.write(c,0,x);
    bw.flush();

    这样输出的是问好

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    char []c=new char[4];
    int x=br.read(c);

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out,"utf-8"));
    bw.write(c,0,x);
    bw.flush();

    这样可以输出你好

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"gbk"));
    char []c=new char[4];
    int x=br.read(c);

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out,"utf-8"));
    bw.write(c,0,x);
    bw.flush();

    这样输出的浣犲ソ。
    想知道当我在输入中文的时候,读取时是否转换成了字节。

1个回答

kaka20099527
kaka20099527   2016.09.12 09:27

乱码的关键是字节数据是用什么编码转的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hashmap,concurrenthashmap底层实现和区别
1.线程安全 百度百科:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[
HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
ConcurrentHashMap源码阅读以及底层实现的简单分析
ConcurrentHashMap HashMap 源码 底层实现 分析
转换流的用法
/*  * 转换流:   * 1)数据转换      InputStreamReader: 该类本身是字符(Reader)系列, 功能:能够把字节输入流转换成字符输入流      OutputStreamWriter: 该类本身是字符(Writer)系列, 功能:能够把字符输出流转换成字节输出流    2)编码转换           能够对流数据进行字符编码转换  */ publ
BZOJ-2301-[HAOI2011]Problem b
ACM模版[HAOI2011]Problem b描述对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。Input 第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、kOutput 共n行,每行一个整数表示满足要求的数对(x,y)的个数Sample Input 2 2 5 1 5
Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别 ArrayList底层实际是采用数组实现的(并且该数组的类型是Object类型的) 如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度的时候) List list = new ArrayL
List-ArrayList、LinkedList、Vector的底层实现和区别
ArrayList底层实际是采用数组实现的(并且该数组的类型是Object类型的)如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度的时候)List list = new ArrayList()时,底层会生成一个长度为10的数组来存放对象ArrayList、Vector底部都是采用数组
Java IO中转换流的作用
字符流与字节流转换 InputStreamReader OutputStreamWriter 转换流的两个作用 提高对文本操作的便捷程度 操作文本涉及到指定编码
Java中转换流的相关用法
/** 1、字节流与字符流之间的转换,称作转换流 包括:InputStreamReader--->是字节流通向字符流的桥梁、OutputStreamWriter--->是字符流通向字节流的桥梁 */ import java.io.*; import java.util.*; import java.text.*; public class TransStreamDemo{ public
java为什么需要转换流?
转换流已经完成了编码转换的动作,对于直接操作的文本文件的FileReaer而言,就不用在重新定义了,     只要继承该转换流,获取其方法,就可以直接操作文本文件中的字符数据了。在使用FileReader操作文本数据时,该对象使用的是默认的编码表。     如果要使用指定编码表时,必须使用转换流。FileReader fr = new FileReader("a.txt");//操作a