[問題] 處理UTF-8 BOM問題的Stream
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/8AUtNJ 或 http://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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章