如何将Reader转换为InputStream并将Writer转换为OutputStream?
有没有简单的方法来避免处理文本编码问题?
你不能真正避免处理文本编码问题,但现在有解决方案:
Reader
到InputStream
: ReaderInputStream
Writer
到OutputStream
: WriterOutputStream
你只需要选择你选择的编码。
如果你从一个字符串开始,你也可以执行以下操作:
new ByteArrayInputStream(inputString.getBytes("UTF-8"))
那么,Reader会处理字符,InputStream会处理字节。 编码指定了如何将字符表示为字节,因此您无法真正忽略该问题。 至于避免问题,我的看法是:挑一个字符集(例如“UTF-8”)并坚持下去。
关于如何真正做到这一点,正如已经指出的那样,“这些类的明显名称是ReaderInputStream和WriterOutputStream 。” 令人惊讶的是,即使包含“相反”类InputStreamReader和OutputStreamWriter,它们也不包含在Java库中 。
所以,很多人提出了自己的实现,包括Apache Commons IO。 根据授权问题,您可能会将commons-io库包含在您的项目中,甚至可能会复制部分源代码(可在此处下载)。
正如你所看到的,这两个类的文档都声明“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?