如何将Reader转换为InputStream并将Writer转换为OutputStream?

有没有简单的方法来避免处理文本编码问题?


你不能真正避免处理文本编码问题,但现在有解决方案:

  • ReaderInputStreamReaderInputStream
  • WriterOutputStreamWriterOutputStream
  • 你只需要选择你选择的编码。


    如果你从一个字符串开始,你也可以执行以下操作:

    new ByteArrayInputStream(inputString.getBytes("UTF-8"))
    

    那么,Reader会处理字符,InputStream会处理字节。 编码指定了如何将字符表示为字节,因此您无法真正忽略该问题。 至于避免问题,我的看法是:挑一个字符集(例如“UTF-8”)并坚持下去。

    关于如何真正做到这一点,正如已经指出的那样,“这些类的明显名称是ReaderInputStreamWriterOutputStream 。” 令人惊讶的是,即使包含“相反”类InputStreamReader和OutputStreamWriter,它们也不包含在Java库

    所以,很多人提出了自己的实现,包括Apache Commons IO。 根据授权问题,您可能会将commons-io库包含在您的项目中,甚至可能会复制部分源代码(可在此处下载)。

  • Apache ReaderInputStream:API /源代码直接链接
  • Apache WriterOutputStream:API /源代码直接链接
  • 正如你所看到的,这两个类的文档都声明“JRE支持的所有字符集编码都被正确处理”。

    注意其中一个答案在这里提到这个错误。 但是这会影响Apache Ant ReaderInputStream类(此处),而不是Apache Commons IO ReaderInputStream类。

    链接地址: http://www.djcxy.com/p/13751.html

    上一篇: How to convert a Reader to InputStream and a Writer to OutputStream?

    下一篇: How do I turn a String into a InputStreamReader in java?