【问题标题】:android studio: reading a csv with Japanese character using opencsvandroid studio:使用opencsv读取带有日文字符的csv
【发布时间】:2015-02-03 15:18:13
【问题描述】:

我的资产文件中有一个 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 文件的文本

以及 logcat 中的屏幕截图:

【问题讨论】:

    标签: android csv


    【解决方案1】:

    这取决于文件的编码。

    运气好的话,它是 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)。

    【讨论】:

    • 感谢您的快速回复,我使用 UTF-16 成功读取和打印文本,对于从 excel 导出的 csv,可能是因为版本,我不知道导出时使用什么编码,并且我使用来自superuser.com/questions/871189/… 的答案导出它
    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2017-02-02
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多