0

在我的 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?

谢谢!

4

1 回答 1

0

您是否尝试在 TSV 文件的开头添加 UTF-8 BOM?这可能会让 Excel 相信它是一个 UTF-8 文件。字节序列为 0xEF,0xBB,0xBF。

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

于 2013-03-12T15:54:49.857 回答