有没有一种简单的方法来避免处理文本编码问题?
发布于 2008-09-15 12:01:47
您无法真正避免处理文本编码问题,但Apache Commons中有现有的解决方案:
Reader to WriterOutputStreamWriter to InputStream:OutputStream您只需要选择您选择的编码。
发布于 2010-07-13 17:35:41
如果从字符串开始,还可以执行以下操作:
new ByteArrayInputStream(inputString.getBytes("UTF-8"))发布于 2012-10-18 02:20:01
Reader处理字符,InputStream处理字节。编码指定了您希望如何将字符表示为字节,因此您不能真正忽略这个问题。至于避免问题,我的意见是:选择一个字符集(例如"UTF-8")并坚持使用它。
关于如何实际做到这一点,正如前面所指出的,“这些类的明显名称是ReaderInputStream和WriterOutputStream__.”令人惊讶的是,“这些并不包括在Java库中”,尽管“相反”的类,InputStreamReader和OutputStreamWriter 都包含在中。
因此,很多人提出了他们自己的实现,包括Apache Commons IO。根据许可问题,您可能会在项目中包含commons-io库,或者甚至复制一部分源代码(可从here下载)。
正如您所看到的,这两个类的文档都声明“JRE支持的所有字符集编码都得到了正确处理”。
注:这里的另一个答案的评论提到了this bug。但这会影响Apache ReaderInputStream类(here),而不会影响Apache IO ReaderInputStream类。
https://stackoverflow.com/questions/62241
复制相似问题