0

私のAndroidアプリケーションでは、TSVファイルを作成し、それを電子メールで送信します。Excelを使用して開こうとすると、ANSIとして検出されるため、一部の文字が正しく表示されません。同じことを行う、自分で作成していない別のアプリケーションがありますが、ExcelはそれをUTF-8として検出します。両方のファイルのHEXコードを確認したところ、20を使用しているのに対し、彼は一部のスペース(タブではない)でC2A0を使用していることがわかりました。

これは私がファイルを作成するために使用するコードです:

        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 に答える