2013-08-06 65 views
1

我得到了一個在Windows-1255中編碼的字節數組。如何獲取以指定編碼打開的CSV文件

Encoding enc = Encoding.GetEncoding("Windows-1255"); 
... 
byte[] bytes = enc.GetBytes(result); 

並將其另存爲CSV文件。

var str = Encoding.GetEncoding(1255).GetString(bytes); 
using (StreamWriter sw = new StreamWriter("c:\\folder\\file.csv", false, Encoding.GetEncoding(1255))) 
{ 
    sw.Write(str); 
} 

當我打開CSV文件,我看到Jibberish:

CA÷AAA

解決方案?

+0

你可以發佈一個** Jibrish **的例子嗎? – christiandev

+0

請將保存的代碼發佈到CSV。還發布瞭如何檢索現有字節的示例。 – Aphelion

+0

Windows-1255編碼是否符合要求?將CSV保存爲更加標準的編碼能夠解決您的問題嗎? – Pluc

回答

0

編輯:澄清後,我明白你爲什麼編碼字節......但是你不需要解碼你的字節......只是寫你的結果。

無論使用UTF8還是Windows-1255,以下代碼都可以正常工作。我可以在記事本++或excel中打開結果CSV。

Encoding encodingOfChoice = Encoding.UTF8; 
byte[] bytes = encodingOfChoice.GetBytes(text); 

using (StreamWriter sw = new StreamWriter("c:\\folder\\folder.csv", 
     false, encodingOfChoice)) 
{ 
    sw.Write(result); 
} 

編輯2: 這個問題是不是真的寫正確的編碼。它讓程序打開它來正確讀取編碼。當我使用Unicode編碼時,我能夠使excel和notepad ++正確讀取字符,但是我必須使它以製表符分隔才能正確打開列中的excel。

+0

爲什麼會出現這個問題? – Nadav

+0

btw,後來我想發送這個編碼的字節數組作爲MemoryStream(字節)的附件。所以沒有辦法我即時放棄編碼 – Nadav

+0

大聲笑...沒問題...這就是爲什麼我提出我的意見......「除非有其他原因」... ...你仍然不需要不必要的解碼... – Kevin

相關問題