作者JohnnyDell (强尼戴尔)
看板java
标题[问题] 处理UTF-8 BOM问题的Stream
时间Tue Jun 17 12:05:00 2014
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://webptt.com/cn.aspx?n=bbs/java/M.1402977904.A.289.html
※ 编辑: JohnnyDell (122.116.194.46), 06/17/2014 14:00:03