首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中读取字符流

在Java中读取字符流
EN

Stack Overflow用户
提问于 2013-06-24 19:10:52
回答 2查看 120关注 0票数 0

InputStream类提供读取字节数据的流,而Reader类提供字符数据的流。为了从流中读取字符数据,我们使用InputStreamReader,它实际上是一个将字节流转换为字符流的桥。难道不可以直接从流中读取字符数据,而不是最初将其作为字节流读取,然后将其转换为字符流吗?

EN

回答 2

Stack Overflow用户

发布于 2013-06-24 19:13:02

不不是。

其中一个原因是,根据文件使用的字符编码,相同的字符可能用不同的字节数表示。

é为例(注意其重音):

  • 在ISO-8859-1中是一个字节;
  • 在UTF-8中是2个字节;
  • 在UTF-32中是4个字节!

这就是为什么在打开Reader时,选择正确的字符编码是至关重要的(这就是Charset类在Java语言中的体现;另请参阅CharsetDecoderCharsetEncoder)。

同样的注意事项也适用于HTTP、XML等:所有这些技术都有这样或那样的方式来指定所使用的字符编码,以便“阅读器”能够正确地读取它。

(这甚至没有提到,根据所使用的编码,相同的字符可能由不同的字节集表示……还记得EBCDIC吗?)

票数 4
EN

Stack Overflow用户

发布于 2013-06-24 19:16:11

输入流读取原始字节,而字符则根据字符编码从流派生。

关于你的问题,你不能直接从流中读取字符,因为没有字符,但只有bytes.You序列需要字符流将字节转换为字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17274048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档