0
我已經使用下面的代碼讓用戶在我的網頁上上傳一個csv文件。 的CSV包含以下信息:使用CSV2TableLayout解析CSV,但得到了一個問號
12345,account,password,ABC,Tom,0
12346,account,password,ABC,Jerry,0
12347,account,password,ABC,Mary,0
doPost.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ServletFileUpload upload = new ServletFileUpload();
upload.setHeaderEncoding("UTF-8");
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
String type = "";
String mode = "";
String name = "";
String remark = "";
String id = "";
Enumeration params = request.getParameterNames();
while (params.hasMoreElements())
{
String param = (String) params.nextElement();
if (param.equals("type")) type = request.getParameter(param);
if (param.equals("mode")) mode = request.getParameter(param);
if (param.equals("name")) name = request.getParameter(param);
if (param.equals("remark")) remark = request.getParameter(param);
if (param.equals("id")) id = request.getParameter(param);
}
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext())
{
FileItemStream item = iterator.next();
if (!item.isFormField())
{
InputStream stream = item.openStream();
//try print stream
BufferedReader lesen = new BufferedReader(new InputStreamReader(stream));
String line = lesen.readLine();
while(line!=null)
{
System.out.println("stream: "+line);
line = lesen.readLine();
}
if (type.equals("csv"))
{
List<BaseModel> devices = CsvParser.csv2ListBaseModel(stream);
}
}
}
}
的的System.out.println將打印出的CSV文件不正確的內容:
Stream: 嚜?2345,account,password,ABC,Tom,0
Stream: 12346,account,password,ABC,Jerry,0
Stream: 12347,account,password,ABC,Mary,0
雖然CsvParser .csv2ListBaseModel(流)也會返回不正確的內容。
import dk.lindhardt.gwt.geie.server.CSV2TableLayout;
import dk.lindhardt.gwt.geie.shared.Cell;
import dk.lindhardt.gwt.geie.shared.TableLayout;
public class CsvParser
{
public static List<BaseModel> csv2ListBaseModel(InputStream stream)
{
CSV2TableLayout csv2TableLayout = new CSV2TableLayout(stream);
TableLayout tableLayout = csv2TableLayout.build();
List<Cell> cells = tableLayout.getCells();
List<BaseModel> devices = new ArrayList<BaseModel>();
BaseModel device = null;
for (int row = 0; row < tableLayout.rows(); row++)
{
device = new BaseModel();
for (int column = 0; column < tableLayout.columns(); column++)
{
String value = null;
try
{
value = (String) tableLayout.getCell(row, column).getValue();
} catch (NullPointerException npe)
{
//
}
device.set(column + "", value);
}
devices.add(device);
}
return devices;
}
}
最後,當我已存儲的設備到數據庫中,在第一行中的第一個字(12345)會變成什麼?12345 CSV文件是UTF-8編碼。 任何建議表示讚賞。 謝謝