繁体   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