作者popcorny (毕业了..@@")
看板java
标题Re: [问题] 处理UTF-8 BOM问题的Stream
时间Tue Jun 17 14:30:09 2014
※ 引述《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"
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.163.46.230
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1402986612.A.663.html
※ 编辑: popcorny (118.163.46.230), 06/17/2014 14:34:50
1F:推 JohnnyDell:原来stream可以开两次~! 了解了~ 06/18 21:25
2F:推 JohnnyDell:再用hasBOM()就可以判断了 感谢P大 06/18 21:42