我的资产文件中有一个csv文件,想要使用opencsv来读取它
我成功地获取并读取了文件,但打印失败,
并且字符串显示为下面的屏幕截图
我的csv从excel
我在阅读和记录csv的代码:
AssetManager assetManager = context.getAssets();
try {
InputStream csvStream = assetManager.open("data.csv");
InputStreamReader csvStreamReader = new InputStreamReader(csvStream);
CSVReader csvReader = new CSVReader(csvStreamReader);
String [] nextLine;
Log.d("test","reading csv");
while ((nextLine = csvReader.readNext()) != null) {
// nextLine[] is an array of values from the line
Log.d("test",nextLine.toString() + " etc...");
String[] temp= nextLine.toString().split(",");
for(int i=0; i<nextLine.length;i++){
Log.d("test", nextLine[i]);
}
break;
}
} catch (FileNotFoundException e) {
Log.d("test","fail read csv");
e.printStackTrace();
} catch (IOException e) {
Log.d("test","io exception csv");
e.printStackTrace();
}
csv文件的文字
和logcat中的屏幕截图:
答案 0 :(得分:0)
这取决于文件的编码。
运气好的话,它是UTF-8。您需要告诉InputStreamReader
使用UTF-8,否则它可能会fall back to ISO 8859_1 (ISO-Latin-1)。
你可以这样做:
InputStreamReader csvStreamReader = new InputStreamReader(csvStream, "UTF-8");
如果您的文件采用其他格式编码,则需要指定该文件。
编辑:重新阅读后,我看到你从Excel导出。您需要tell Excel to export in UTF-8而不是默认值(可能是Windows-1252)。