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