Re: [问题] 处理UTF-8 BOM问题的Stream

楼主: popcorny (毕业了..@@")   2014-06-17 14:30:09
※ 引述《JohnnyDell (强尼戴尔)》之铭言:
: Update:
: 最后改用别的solution了 因为原本那招也卡在
: OutputStream就是进不去CSV2TableLayout..
: 改用 org.apache.commons.io.input.BOMInputStream
: 在一开始从servlet读进来的Stream就直接exclude掉BOM
: 不过缺点是只能处理UTF-8 BOM,对于UTF-16跟UTF-32就一样会被炸到
你需要开两次stream..
ServletFileUpload已经把上传放进档案了,
所以你可以开两次去处理
第一次判断BOM.. 用你的BOMInputStream就可以判断了
第二次再重开Stream.
有BOM的Skip两个bytes
再丢到你要的那个Class的contructor
没有得就直接处理.
然后我刚刚看你的那个class
在判断encoding后
再用setCharset去设定charset
例如"UTF-16BE" 或 "UTF-16LE" 或 "UTF-8"
作者: JohnnyDell (强尼戴尔)   2014-06-18 21:25:00
原来stream可以开两次~! 了解了~再用hasBOM()就可以判断了 感谢P大

Links booklink

Contact Us: admin [ a t ] ucptt.com