用UTF8编码读入一个utf8的文件,结果写入输出流的时候还是乱码?这是怎么回事?InputStream ist = LaucherTest.class.getResourceAsStream("/Book1.csv");InputStreamReader reader = new InputStreamReader(ist,"UTF-8");ByteArrayOutputStream str= new ByteArrayOutputStream();int ch;while((ch=reader.read())!=-1){str.write(ch);}查看str内容,结果还是乱码 :!:
4 回答

青春有我
TA贡献1784条经验 获得超8个赞
InputStreamReader read() 是读取一个字符;
ByteArrayOutputStream write(int b) 将指定的字节写入此字节数组输出流。
[code="java"]
public synchronized void write(int b) {
int newcount = count + 1;
if (newcount > buf.length) {
byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)];
System.arraycopy(buf, 0, newbuf, 0, count);
buf = newbuf;
}
buf[count] = (byte)b;//在这里转换为byte,只有一个字节,字符是两个字节
count = newcount;
}
[/code]
应该用Writer,比如CharArrayWriter、 PrintWriter等。
添加回答
举报
0/150
提交
取消