[問題] 處理UTF-8 BOM問題的Stream

看板java作者 (強尼戴爾)時間11年前 (2014/06/17 12:05), 11年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
Update: 最後改用別的solution了 因為原本那招也卡在 OutputStream就是進不去CSV2TableLayout.. 改用 org.apache.commons.io.input.BOMInputStream 在一開始從servlet讀進來的Stream就直接exclude掉BOM 不過缺點是只能處理UTF-8 BOM,對於UTF-16跟UTF-32就一樣會被炸到 -- 請問各位大大 目前遇到上傳utf-8格式的.csv檔出現BOM問題 http://atedev.wordpress.com/2007/09/19/bom-bom-bom/ 找了一下解決方案 預計採用 UnicodeReader.java http://goo.gl/8AUtNJhttp://goo.gl/ulAJ9m 可是原本程式架構是把stream直接傳進CSV2TableLayout http://goo.gl/En5xG1 因此我處理不到他裡面所用的BufferedReader(Line 103) 目前想法是從InputStream->UnicodeReader->OutputStream->CSV2TableLayout 先把BOM給移除在進去CSV2TableLayout 先是openStream()到一個InputStream ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); FileItemStream item = iterator.next(); InputStream stream = item.openStream(); 進UnicodeReader後,小弟我就不會轉回去OutputStream了.. UnicodeReader reader = new UnicodeReader(stream, "utf-8"); BufferedReader br = new BufferedReader(reader); OutputStream os = new OutputStream();//<--**問題出在這行 BufferedWriter bw = new BufferedWriter(os); int data=1; while ( (data=br.read()) != -1) { bw.write(data); } 想請問如何把data在寫回到Stream中呢? 其實就是OutputStream那行不曉得該傳什麼參數進去.. 好讓我可以 List<BaseModel> data_lists = CSV2TableLayout(os); 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.194.46 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1402977904.A.289.html ※ 編輯: JohnnyDell (122.116.194.46), 06/17/2014 14:00:03
文章代碼(AID): #1JdxvmA9 (java)
文章代碼(AID): #1JdxvmA9 (java)