私は何をやっている?私は自分のsqliteデータベースをcsvにエクスポートしています-少なくとも私はしようとしています
私はこれを手動と「OpenCSV」の両方で行いました。
どちらの方法でも、非常に奇妙な結果が得られます。それらはうまくフォーマットされていないようです。列(通常は'、'?で区切られます)も特殊文字(opencsv内で処理されると言われています)も、本来あるべきようには見えません。コード:
CSVWriter writer = new CSVWriter(new FileWriter(file),'\n',',');
String[] items = new String[11];
c.moveToFirst();
while(!c.isAfterLast()){
items[0] = c.getString(c.getColumnIndex(BaseColumns._ID));
items[1] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_QRCODE));
items[2] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_NAME));
items[3] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_AMOUNT));
items[4] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_UNIT));
items[5] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_PPU));
items[6] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_TOTAL));
items[7] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_COMMENT));
items[8] = c.getString(c.getColumnIndex(DepotTableMetaData.ITEM_SHOPPING));
items[9] = c.getString(c.getColumnIndex(DepotTableMetaData.CREATED_DATE));
items[10] = c.getString(c.getColumnIndex(DepotTableMetaData.MODIFIED_DATE));
c.moveToNext();
writer.writeNext(items);
}
writer.close();
そしてそれはすべて結果としてこれを与えます:
私もFileWriterとStringBufferを使ってそれを行いましたが、まったく同じ結果が得られるようです...私を助けていただければ幸いです;)
stackoverflowを調べましたが、一致する質問が見つかりませんでした; /
編集:はい、私は「古い、非推奨の」カーソルを使用していることを知っていますが、それはここでの問題ではありません。ありがとう。
edit2:解決しました!いくつかの一般的なエンコーディングを割り当てる必要があります!
CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(destination+"/output.csv"),"UTF-8"));
仕事は完璧でした!