2013-01-07 19 views
0

在我的Logger類中,它將所有錯誤,信息和調試消息寫入.csv文件。我想記錄一個包含標點符號的字符串。我有我返回當前Android版本是這樣的方法:在.csv文件中跳出標點符號

public String getAndroidVersion() { 
     androidVersion = android.os.Build.VERSION.RELEASE; 
     return androidVersion; 
} 

日誌記錄編碼是這樣的:

logToFile(String.format("%s;%s;%s;%s;%s\r\n", new Date().toString(), level,_processName, message, "\""+utils.getAndroidVersion()+"\"")); 

我希望最後一欄包含了Android版本,這是4.2.1,但它會以某種方式將其轉換爲如下數據:04.02.2001。我知道方法getAndroidVersion的返回值是正確的。正如你在上面的例子中看到的,我試圖逃避這個角色。

這裏發生了什麼,我使用錯誤的轉義字符?

謝謝!

編輯。當我在notepad++打開.csv文件,它看起來像這樣:

Date;Level;Process;Message;AndroidVersion 
Mon Jan 07 13:37:51 CET 2013;INFO;Splash Screen;Application Started;"4.2.1" 
Mon Jan 07 13:38:00 CET 2013;INFO;Bluetooth MessageHandler;Incomming file from VMw-1001500;"4.2.1" 
Mon Jan 07 13:38:13 CET 2013;INFO;Bluetooth MessageHandler;File Received From VMw-1001500;"4.2.1" 
Mon Jan 07 13:38:29 CET 2013;ERROR;BluetoothCommunicator;socket closed;"4.2.1" 
Mon Jan 07 13:38:29 CET 2013;ERROR;BluetoothCommunicator;read failed, socket might closed, read ret: -1;"4.2.1" 

這看起來像它應該,但出類拔萃的格式我的.csv錯不知何故?

+0

嗨,你看「2001年4月2日」,在您的CSV文件打開一些文本編輯器(如記事本),或者你看到它時,CSV文件導入並在EXEL或開放式辦公室解析? –

+0

請檢查我的編輯。謝謝。 –

+0

CSV沒有類型,所以你不能說如何程序必須解釋導入的價值。一種可行的方法是在導入後對列進行格式化,或者將csv中的值轉換爲另一個不能被視爲數據的字符串。也許加入一個+或空格。 –

回答

1

這是Excel的一項「功能」,它可以自動將日期看起來像日期的字符串解析。您的CSV沒有任何問題。

我不知道如何把它們關掉在Excel中,雖然,但這個問題可以幫助你:Excel changes date formats。我想你在導入CSV時可以「將日期列預先格式化爲文本」。因人而異。

+0

我剛剛在版本號前添加了一個「V」。問題沒有了。謝謝。 –