簡體   English   中英

在Android中創建TSV文件:當我嘗試在Excel中打開它檢測到它為ANSI時,我需要UTF-8

[英]Creating TSV file in Android: when I try to open in Excel it detects it as ANSI, I need UTF-8

在我的Android應用程序中,我創建一個TSV文件,然后通過電子郵件發送它。 當我嘗試使用Excel打開它時,它會將其檢測為ANSI,因此看不到我的某些字符。 我沒有由我創建的另一個應用程序,該應用程序也執行相同的操作,但是Excel將其檢測為UTF-8。 我檢查了兩個文件的十六進制代碼,發現他在某些空格(不是制表符)中使用C2 A0,而我使用20。

這是我用來創建文件的代碼:

        FileOutputStream writeFileHandler = context.openFileOutput(LOG_FILENAME_CSV, Context.MODE_WORLD_READABLE);
        OutputStreamWriter oputStreamWriter = new OutputStreamWriter(writeFileHandler, "UTF-8");

        for(int i=log_rows.length-1; i>=0; i--){
            String[] entries = getDailyLogEntries(log_rows[i]); // array of your values
            for(int j=0; j<entries.length; j++){
                if(j==0)  oputStreamWriter.write(entries[j]);
                else{
                    if(entries[j] != null) oputStreamWriter.write("\t"+entries[j]);
                }
            }
            oputStreamWriter.write("\n");
        }
        oputStreamWriter.flush();
        oputStreamWriter.close();
        writeFileHandler.close();

我嘗試使用DDMS提取文件以避免發送電子郵件,並且結果相同,被檢測為ANSI。 我該怎么做,以便Excel將其檢測為UTF-8?

謝謝!

您是否嘗試過在TSV文件的開頭添加UTF-8 BOM? 這可以說服Excel它是UTF-8文件。 字節序列為0xEF,0xBB,0xBF。

參見http://en.wikipedia.org/wiki/Byte_order_mark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM