android studio:使用opencsv读取带日文字符的csv

时间:2015-02-03 15:18:13

标签: android csv

我的资产文件中有一个csv文件,想要使用opencsv来读取它 我成功地获取并读取了文件,但打印失败,
并且字符串显示为下面的屏幕截图 我的csv从excel

保存为Unicode

我在阅读和记录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文件的文字
enter image description here

和logcat中的屏幕截图:
enter image description here

1 个答案:

答案 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)。