为了账号安全,请及时绑定邮箱和手机立即绑定

为什么以UTF8格式读取UTF8格式文件,写入输出流后还是乱码

为什么以UTF8格式读取UTF8格式文件,写入输出流后还是乱码

慕田峪7331174 2019-03-21 14:15:35
用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等。


查看完整回答
反对 回复 2019-04-26
?
千万里不及你

TA贡献1784条经验 获得超9个赞

.java 和项目encoding 转为uft-8


查看完整回答
反对 回复 2019-04-26
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

你是怎么查看str里的内容的?你能确定查看的方式是UTF-8编码的吗?


查看完整回答
反对 回复 2019-04-26
  • 4 回答
  • 0 关注
  • 1021 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号